2017-07-12 13 views
-1

私は基本的なコマンドラインBMI電卓をJavaでコード化しようとしていますが、コードを実行して高さと重量を入力するたびに何らかの理由で0が出力されます。私が間違っている箇所を理解するのを手伝ってください。BMI電卓Javaの不正な出力

Enter your height in inches: 
68 
Enter your weight in lbs: 
180 
Your BMI is 0. 
+0

'(703 * myWeight/myHeight/myHeight)'に変更した場合、状況は変わります。根本的な原因は、複製に記載されています。 –

答えて

0

をあなたは、intintを分割しているので、結果が丸みを帯びたint次のとおりです。次のように

import java.util.Scanner; 
public class Chap2 { 
    public static void main(String[] args){ 
     Scanner reader = new Scanner(System.in); 
     System.out.println("Enter your height in inches: "); 
     int myHeight = reader.nextInt(); 
     System.out.println("Enter your weight in lbs: "); 
     int myWeight = reader.nextInt(); 
     int Bmi = (myWeight/myHeight/myHeight)*703; 
     System.out.println("Your BMI is " + Bmi + "."); 
} 
} 

そして、私の出力です。 正確な結果を得るために計算の前に倍精度化するためにキャストします。

double bmi = ((double) myWeight/myHeight/myHeight) * 703; 
+0

intをintで分けるのはなぜですか? –

+0

結果が再び 'int'になり、これが丸められます。フリスト計算は「0」であり、したがって次も同様である。さらに読む:[link](https://stackoverflow.com/questions/4685450/why-is-the-result-of-1-3-0) – A1m

+0

そして、変数名を大文字にしないでください! :) – A1m