ここから本文です

JAVAでBMIのプログラムを作ろうと思っているのですが

for********さん

2010/1/800:09:49

JAVAでBMIのプログラムを作ろうと思っているのですが

import java.io.*;

public class post_03 {

public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

int weight,height;
double bmi; //BMI値を代入する変数です。

System.out.println("あなたの体重と身長を入力してください");

System.out.print("体重(kg):");
weight = Integer.parseInt(br.readLine());

System.out.print("身長(cm):");
height = Integer.parseInt(br.readLine());
height=height/100;
bmi=weight/height*height;
if (bmi<18.5) {
System.out.println("あなたの体型はやせです");
}
else if (18.5<=bmi && bmi<25.0) {
System.out.println("あなたの体型は標準です");
}
else if (25.0<=bmi && bmi<30.0) {
System.out.println("あなたの体型は肥満です");
}
else if (30.0<=bmi) {
System.out.println("あなたの体型は高度肥満です");
}

}
}
これだとどんな数字をいれても高度肥満になってしまうのですがどこがおかしいかご
指摘いただけないでしょうか?よろしくお願いします。

閲覧数:
3,084
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

kin********さん

2010/1/801:13:04

既に指摘されているところもおかしいですが、一番の問題は↓です。
>height=height/100;
整数型の演算ですので注意してください。これでは多くの人が height = 1、高くても 2 になります。
整数の演算という点では
>bmi=weight/height*height;
↑も同様です。
weight、height の型は double にした方が良いです。


本題とはそれますが、条件判定式が冗長です。
>else if (18.5<=bmi && bmi<25.0) {
bmi < 18.5 でないのであれば、bmi >= 18.5 という事は確定しています。その後の部分についても同様です。

if(bmi < 18.5){}
else if(bmi < 25.0){}
else if(bmi < 30.0){}
else{}

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

ii3********さん

2010/1/800:53:59

bmi=weight/height*height;
がおかしい。
これだと、weight/heighを計算した結果に、heightをかけることになる。

体重を身長の2乗で割るのだから、
bmi = weight / (height * height);
とすべき。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる