#java
#java
Вопрос:
Вот всплывающая ошибка:
Riccio_Lesson5.java:88: error: illegal start of expression
}else if(bmi == 18.5 amp; <= 24.9){
^
Riccio_Lesson5.java:91: error: illegal start of expression
}else if(bmi == 25.0 amp; <= 29.9){
^
Вот код для этого:
if(bmi < 18.5){
System.out.print(", indicating your weight is in thenUnderweight category for adults of your height.");
System.out.print("nnTalk with your healthcare provider to determine possible causes of underweight and if you need to gain weight.");
}else if(bmi == 18.5 amp; <= 24.9){
System.out.print(", indicating your weight is in the nNormal category for adults of your height.");
}else if(bmi == 25.0 amp; <= 29.9){
System.out.print(", indicating your weight is in the Overweight category for adults of your height.");
}else if(bmi >= 30.0){
System.out.print(", indicating your weight is in the Obese category for adults of your height.");
}
Я пытаюсь сказать, что если имт равен 18,5 или меньше или равен 24,9, ваш ИМТ будет отображаться как нормальный / если ваш ИМТ равен 25 или меньше / равен 29,9, у вас избыточный вес.
Комментарии:
1. Вам нужны два сравнения с логическим, а не побитовым, и.
2. что
bmi == 25.0 amp; <= 29.9
следует проверить? может быть, вы хотитеbmi >= 25.0 amp;amp; bmi <= 29.9
3. И вам нужно не равно, а больше, чем равно. Хотя, если диапазоны являются смежными, в этом также не будет необходимости. Учебное пособие по Java может быть хорошей идеей.
4. Кстати, что, если bmi равен 29,95?
5. Итак, если я использую оператор amp;amp;, должен ли я тогда изменить == на >= (больше или равно 18,5), чтобы он выполнял оба условия?
Ответ №1:
Вы не можете оставить левую часть выражения сравнения в Java, как мы сделали бы на естественном языке; это всегда должно быть явным. «ИМТ больше или равен 18,5 и меньше или равен 24,9» должен переводиться в:
bmi >= 18.5 amp;amp; bmi <= 24.9
Обратите внимание, что я использовал >=
для перехвата значений, больших или равных 18,5. Я также использовал amp;amp;
, который обычно используется для логических союзов из-за его поведения короткого замыкания, хотя amp;
он отлично работает для логических операций.
Вы также можете захотеть использовать bmi < 25.0
вместо bmi <= 24.9
, потому что ваше следующее else if
условие начинается с (или будет начинаться с) bmi >= 25.0
, и вы захотите перехватить такие значения, как 24.95, которые не будут перехватываться вашей текущей логикой.
Аналогичные изменения необходимы для следующего else if
условия.