質問: BMIの値を計算して"痩せすぎ・標準・太りすぎ"の判定をするプログラムを作りたいのですが、計算するところまではできたものの、判定するところでエラーが出てしまいました。どこを直せばいいのでしょうか? ``` import java.util.Scanner; public class BMIPrint{ public static double bmi(double h,double w){ double bmi=w/(h*h); return bmi; } public static void main(String[] args){ double h,w; Scanner sc=new Scanner(System.in); System.out.println("身長(m)を入力してください"); h=sc.nextDouble(); System.out.println("体重(kg)を入力してください"); w=sc.nextDouble(); System.out.println("BMIは"+bmi(h,w)); } public static void printMsg(double bmi){ if(bmi<18.5){ System.out.println("あなたは痩せすぎです"); } if(18.5<=bmi<25.0){ System.out.println("あなたは標準体型です"); } if(bmi>=25.0){ System.out.println("あなたは太りすぎです"); } } } ``` エラー: 20行目の二項演算子'<='のオペランド型が不正です if(18.5<=bmi<=25.0){ 最初の型: boolean 2番目の型: int よろしくお願いします。
回答: エラーに書いてある日本語のとおりなんですが ``` if(18.5<=bmi<25.0){ ``` 上記のコードは、まず左側の18.5 <= bmiが評価されます。 次のその結果であるBoolean型が右側の25.0と比較されます。 つまりBooleanに対して比較演算子を用いようとしているので悲鳴をあげているわけです。 やりたいことはこういうことでしょう。 ``` if(18.5 <= bmi && bmi < 25.0){ System.out.println("あなたは標準体型です"); } ```