2016-12-09 1 views
-2

私はjavaで新しく、私は自分のコーディングで何がうまくいかないのか把握しようとしています。私が手紙を入力するたびにそれはクラッシュする?以下に示すように。試しに例外を処理するには

マークで読む

Y

エラープラザ番号を入力し

Exception in thread "main" java.util.InputMismatchException 

    at java.util.Scanner.throwFor(Scanner.java:864) 
    at java.util.Scanner.next(Scanner.java:1485) 
    at java.util.Scanner.nextInt(Scanner.java:2117) 
    at java.util.Scanner.nextInt(Scanner.java:2076) 
    at histogram.Histogram.main(Histogram.java:95) 

bC:\Users\Chevon\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1 
    BUILD FAILED (total time: 2 seconds) 

次の学生マークを入力します。これは私のコードです:

int cat1 = 0;// Category 1 
    int cat2 = 0;// Category 2 
    int cat3 = 0;//Category 3 
    int cat4 = 0;//Category 4 
    int mark = 0;// Total marks that the user enters 
    int counter = 0; 
    double Average = 0; 
    int Total_mark = 0; 
    int pass=0; 
    int highest = 0; 
    int lowest = 101; 

    Scanner input = new Scanner(System.in); 
    System.out.println("Read in a mark"); 
    try{ 
     mark= input.nextInt(); 
     System.out.println("The number you enter is "+mark); 
    }catch(InputMismatchException e){ 
     System.out.println("Error plz enter a number"); 

    } 
    while(mark<0){ 
     System.out.println("Enter a positive integer"); 
     mark = input.nextInt(); 
    } 

は、私はそれがマークでこの

読むようになると予想

Y

エラーplzは

は、次の学生マークを入力番号を入力し

+3

をあなたは 'nextInt()'何を思い、 "マークを読み込む" と言った後? – chrylis

答えて

0

あなたのコードでは、catchがonlで動作します最初のユーザー入力の場合はyです。
次のユーザー入力にInputMismatchExceptionを処理するには、別のcatchを追加する必要があります。それ以外の場合は、例外が発生し、入力が数値でない場合はメソッドを終了します。

それを試してみてください。

try{ 
    mark= input.nextInt(); 
    System.out.println("The number you enter is "+mark); 
} 
catch(InputMismatchException e){ 
    System.out.println("Error plz enter a number"); 
} 

while(mark<0){ 
    try{ 
     System.out.println("Enter a positive integer"); 
     mark = input.nextInt(); 
    } 
    catch(InputMismatchException e){ 
     System.out.println("Error plz enter a number"); 
    } 

}