2017-04-13 14 views
0

体重指数計算機をJavaで割り当てにする必要があり、体重を求めるときにアルファベット文字を入力すると、プログラムを終了してメッセージ。私はifステートメントの作成に助けが必要です。ここに私が持っているものがあります(それは働いていません)。私は様々な他の不平等記号を試してみましたが、成功しませんでした。私はif(コマンド間)を使用する必要があるかもしれないと思ったが、私はweight変数でその作業を行う方法を発見しなかった。アルファベット文字が入力されたときにJavaプログラムを終了する

は、以下私が受け取るエラーであるとして Lab4.java:21:(重量< = Z)weight場合 ^

public class Lab4 
    { 
      public static void main (String[] args) 
      { 
        Scanner kb = new Scanner (System.in); 
        System.out.println("enter e for english or m for metric"); 
        String choice; 
        choice = kb.nextLine(); 
        char firstchar; 
        firstchar = choice.charAt(0); 
      boolean english; 
      english = firstchar == 'e'; 
      if (english) 
      { 
        // prompt the user to input their weight in pounds 
        System.out.println("Enter your weight in pounds"); 
        double weight = kb.nextDouble(); 
        if (weight <= Z) 
        { 
          System.out.println("letters are not an acceptable weight"); 
          System.exit(0); 
        } 
        // prompt the user to input their height in inches 
        System.out.println("Enter your height in inches"); 
        double height = kb.nextDouble(); 
        if (height == 0.0) 
        { 
          System.out.println("0 is not a valid height"); 
          System.exit(0); 
        } 
        // make bmi to an integer and compute bmi by dividing weight by height^2 * 750 
        int bmi = (int)(weight/(height*height)*703); 
        // have the computer display height, wieght, and bmi 
        System.out.printf("your weight is %8.2f", weight); 
        System.out.println(" pounds"); 
        System.out.printf("your height is %8.2f", height); 
        System.out.println(" inches"); 
        System.out.println("your BMI is " + bmi); 
        if (bmi <= 24) 
          System.out.println("Normal Bodyweight"); 
          else 
          { 
            if (bmi > 30) 
              System.out.println("Obese"); 
            else 
              System.out.println("Overweight"); 
+0

具体的には、変数の宣言とエラーメッセージを含めてください(正規表現を使用してください)。 – shmosel

+0

"(重量<= Z)の場合、"エラーでシンボルを見つけることができません。それは "Z"が定義されていないからです。 –

答えて

1

は、入力文字列がある場合、エラーがシンボル を見つけることができません。次のfromAlpha関数を使用できます。https://stackoverflow.com/a/5238524/1926621

入力がアルファベット順であるかどうかを確認する条件としてif (isAlpha(weight))を実行します。

+0

@OusmaneMahyDiaw:私に知らせてくれてありがとう!コードを削除し、参照用にソースリンクを保持しました。 – Mohit

+0

あなたは大歓迎です:)。 –

0

weightは、文字列さを考慮すると - 、あなたはInputMismatchExceptionがスローされますし、プログラムもあなたifチェック(すなわち、weight <= Zに入る/実行する前に終了しますkb.nextDouble()を使用してdoubleとしてweightをあなたのコードで

if(!weight.matches("[-+]?\\d*\\.?\\d+")){ 
    System.out.println("Ikke akseptert. Quitter"); 
    System.exit(0); 
} 
1

読んでいます)。

はまた、もう一つ重要な点は、以下に示すようにscanner.nextLine()を使用して文字列としてweightを読んで、それがないかどうかを確認、あなたがそうweight <= Z

のように、charタイプ直接すなわちでdoubleを比較することはできませんということです

String weight = kb.nextLine(); 
if(!weight.contains(/^\d*\.?\d*$/)) { 
    System.out.println("letters are not an acceptable weight"); 
    System.exit(0); 
} 
関連する問題