``` import java.util.Scanner; class BMICalculator { public static double calculateBMI(double weight, double tall) { double bmi = weight / (tall*tall); // 해당 메소드를 구현하세요. //저체중(18.5미만), 정상(18.5이상 ~ 25미만), 과체중(25이상~30미만), 비만(30이상) return bmi; } public static void printBMIClassification(double bmi) { if (bmi<18.5) { System.out.println("저체중"); } else if (bmi<25) { System.out.println("정상"); } else if (bmi<30) { System.out.println("체중"); } else { System.out.println("비만"); } } public static void main(String[] args) { System.out.println("몸무게(kg)와 키(m)를 입력하세요."); Scanner input = new Scanner(System.in); double weight = input.nextDouble(); double tall = input.nextDouble(); // BMI 지수 계산 double bmi = calculateBMI(weight, tall); // BMI 지수를 입력하여 비만도 결과 출력 printBMIClassification(bmi); } } ``` 두가지 질문이 있습니다. 첫째, 조건문에서 18.5<=bmi<25 이렇게 하려고 먼저 시도를 했으나 빨간줄이 나오더라구요. 그래서 else if 로 바꿨던 건데 왜 <= 이 기호를 사용했을 때 빨간줄이 나왔던 것인지 궁금합니다. 두번째, bmi를 출력하고 싶은데 어떻게 해야하나요? 단순히 calculateBMI(bmi)로 하기에는 파라메터 모양과 일치하지 않아서 출력이 안되는 것 같구요 어떻게 해야 bmi값도 출력이 되는지 궁금해요! 감사드립니다~
# 비교연산자와 메소드의 역할 구분 ## 비교 연산자와 논리연산자의 활용 비교연산자는 이항연산자 즉, 한번에 두 개 까지만 비교가 가능합니다. 따라서 `18.5 <= bmi < 25`와 같은 조건식은 사용 할 수 없습니다. 이런 경우 논리 연산자를 통해 비교식을 확장 할 수 있습니다. ``` if (bmi >= 18.5 && bmi < 25) { ... } ``` ## bmi 결과값 출력 `printBMIClassification(bmi)` 메소드에서 비만도와 함께 bmi 값을 출력하시면 되겠습니다. 메소드는 한번에 한가지 일만을 집중 할 수록 좋습니다. 따라서 계산 메소드에서 출력하기보다, 출력 메소드에서 같이 처리하는게 좋습니다. ``` public static void printBMIClassification(double bmi) { String classification = ""; if (bmi <18.5) { classification = "저체중"; } else if (bmi < 25) { classification = "정상"; } else if (bmi < 30) { classification = "과체중"; } else { classification = "비만"; } System.out.printf("%s - %.2f\n", classification, bmi); } ```
덕분에 의문이 해결됐어요!감사드립니다!