# 다이어트(BMI 지수)
#### CODE <a class='btn btn-default' href='/codes/24927'>Link</a>
```
public class Diet {
public static void main(String[] args) {
// 변수 생성
double w = 81.6;
double t = 1.76;
// BMI 계산
double bmi = calculate(w, t);
// 결과 출력
System.out.printf("BMI: %.2f(%.1fkg, %.2fm)\n", bmi, w, t);
System.out.printf("결과: %s입니다.\n", result(bmi));
}
// 몸무게와 키를 입력받아, bmi 지수를 반환
public static double calculate(double weight, double tall) {
/* 해당 메소드를 완성하시오. */
return weight / (tall * tall);
}
// bmi 지수를 입력받아, 비만 결과를 반환
public static String result(double bmi) {
String result = "";
/* 해당 메소드를 완성하시오. */
if (bmi >= 30) {
result = "비만";
} else if (25 <= bmi < 30) {
result = "과체중";
} else if (18.5 <= bmi < 25) {
result = "정상";
} else {
result = "저체중";
}
return result;
}
}
```
#### INPUT
```
```
#### OUPUT
```
/root/var/tmp/2020_05_15_05_26_13_66347dca/Diet.java:27: error: bad operand types for binary operator '<'
} else if (25 <= bmi < 30) {
^
first type: boolean
second type: int
/root/var/tmp/2020_05_15_05_26_13_66347dca/Diet.java:29: error: bad operand types for binary operator '<'
} else if (18.5 <= bmi < 25) {
^
first type: boolean
second type: int
2 errors
```
bad operand types for binary operator -> 무슨 뜻인가요?
sehongpark님의 답변
# 비교 연산자와 그 대상
아래 에러내용은, 비교연산자 '<' 에 사용된 피연산자. 즉, 비교 대상 값이 이상하다는 에러입니다.
```
bad operand types for binary operator '<'
```
## 해결 방법
논리 연산자를 사용하여 문제를 해결해보세요.
```
...
} else if (25 <= bmi && bmi < 30) { // 25 이상이면서, 동시에 30보다는 작은 bmi인 경우!
...
```
## 에러 원인
연산자의 우선순위가 같은 경우, 좌측에서부터 연산 됩니다. 아래 코드 연산을 분석해보면 다음과 같습니다.
```
// bmi는 28이라 가정!
진행 1: (25 <= bmi < 30)
진행 2: (true < 30)
진행 3: (????????) // 에러 발생! boolean 값과 30을 비교할 수 없음!
```
## PS.
질문 감사합니다!