2017-02-19 3 views
-1

私は、ユーザーが学生のクラス番号(cn)とその学生のグレード(ngrade)を入力する簡単なプログラムを作っています。私は、cnとngradeの入力が整数かどうかをチェックする例外を追加しようとしていました。そうでない場合、ユーザは無効である旨の通知を受け、詳細を入力するように要求する。入力がすべて整数の場合はチェックループ

問題:whileループを使用して、ループ全体の入力をチェックしました。しかし、私は無限ループを得ています。

CODE:あなたが望む動作を取得するための一つのオプションはScanner#nextLine()を使用して、文字列として各入力に読み、その後、手動で整数としてその入力を解析しようとするだろう

import java.io.*; 
import java.util.*; 

public class trrying { 

    public static void main(String[] args) { 
     int ngrade; 
     int cn; 
     int A = 0, B = 0, C = 0, D = 0, E = 0; 
     boolean test = false; 
     Scanner sn = new Scanner(System.in); 

     while (!test) { 
      try { 
       for (int i = 0; i <= 2; i++) { 

        System.out.println("Enter class number: "); 
        cn = sn.nextInt(); 
        System.out.println("Enter numeric grade: "); 
        ngrade = sn.nextInt(); 
        System.out.println("Letter Grade: "); 

        if (ngrade >= 90) { 
         A++; 
         System.out.println("A"); 
        } else { 
         System.out.println("HELLO"); 
        } 

        test = true; 

       } 
       test = false; 
      } catch (Exception e) { 
       System.out.println("ERROR! "); 
       // System.out.println("Enter class number: "); 

      } 

     } 
    } 
} 
+0

関連:(http://stackoverflow.com/questions/3059333/validating-input-using-java-util-scanner)java.util.Scannerを使用して入力の検証]、[スキャナを使用する方法入力として有効なintだけを受け入れる](http://stackoverflow.com/questions/2912817/how-to-use-scanner-to-accept-only-valid-int-as-input) – Pshemo

答えて

-2

。成功した場合は、その入力を受け入れ、ロジックを続行します。成功しなかった場合は、例外をキャッチし、ループを繰り返して別のユーザー入力を取得します。

for (int i=0; i <= 2; i++) { 
    String line = ""; 
    while (true) { 
     System.out.println("Enter class number: "); 
     line = sn.nextLine(); 
     try { 
      cn = Integer.parseInt(line); 
      break; 
     } catch(Exception e) { 
      System.out.println("Enter class number as an integer only."); 
     } 
    } 
    while (true) { 
     System.out.println("Enter numeric grade: "); 
     line = sn.nextLine(); 
     try { 
      ngrade = Integer.parseInt(line); 
      break; 
     } catch(Exception e) { 
      System.out.println("Enter numeric grade as an integer only."); 
     } 
    } 

    System.out.println("Letter Grade: "); 

    if (ngrade >= 90) { 
     System.out.println("A"); 
    }   
    else { 
     System.out.println("HELLO"); 
    } 

    test = true; 
} 
+0

注:私はこの回答にペニングを始めましたそれが重複としてマークされる前に。私はこの答えをここに残すので、OPはこの問題を解決する方法の1つを見ることができます。 –

+0

説明文を追加してコミュニティウィキにすることを検討してください –

+0

回答を編集すると、これだけのチェックボックスが表示されます。それはかなり簡単に見つける必要があります。 –

関連する問題