質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

4回答

35430閲覧

「二項演算子'<='のオペランド型が不正です」について

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2017/05/16 14:03

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

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swordone

2017/05/16 14:33

解決したならベストアンサーを付けましょう。
guest

回答4

0

不等号を続けて書いても意図通りにはならないでしょう

18.5<= bmi && bmi <= 25.0と分けましょう。

投稿2017/05/16 14:11

HogeAnimalLover

総合スコア4830

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/16 14:20

ありがとうございます。教えていただいた通りに書き直してみたらできました。
guest

0

比較演算子の結果はbooleanです。
18.5<=bmi<=25.0
==>
(18.5<=bmi)<=25.0
と解釈すると
boolean <= 25.0
という比較をやる結果になりますよ?

投稿2017/05/16 14:13

KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/16 14:17

無謀なプログラムを組もうとしていたことに気づきました… 丁寧な解説をありがとうございました。
guest

0

ベストアンサー

エラーに書いてある日本語のとおりなんですが

Java

1if(18.5<=bmi<25.0){

上記のコードは、まず左側の18.5 <= bmiが評価されます。
次のその結果であるBoolean型が右側の25.0と比較されます。
つまりBooleanに対して比較演算子を用いようとしているので悲鳴をあげているわけです。

やりたいことはこういうことでしょう。

Java

1 if(18.5 <= bmi && bmi < 25.0){ 2 System.out.println("あなたは標準体型です"); 3 } 4

投稿2017/05/16 14:13

honami

総合スコア308

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/16 14:19

&&で繋ぐやり方がすっぽり頭から抜けていました。教えてくださった通りに書き直したらできました。ありがとうございました。
guest

0

18.5<=bmi は true または false になります。
仮に true だとすると
18.5<=bmi<25.0 は true<25.0 となり、比べられないものを比べているのでエラーになります。

投稿2017/05/16 14:12

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/16 14:19

数学と同じ調子で書いてしまっていました。教えてくださってありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問