2016-04-19 42 views
0

這個程序需要返回「輸入無效」,如果不是0-4之間的行以外的任何輸入,目前我得到的錯誤:錯誤掃描輸入無效

Exception in thread "main" java.util.InputMismatchException 
at java.util.Scanner.throwFor(Unknown Source) 
at java.util.Scanner.next(Unknown Source) 
at java.util.Scanner.nextInt(Unknown Source) 
at java.util.Scanner.nextInt(Unknown Source) 
at ass.Puzzle.play(Puzzle.java:147) 
at ass.Puzzle.main(Puzzle.java:18) 
+1

你可能想用's.nextLine讀它()',而不是's.nextInt',並檢查它是否實際數量和furtherone如果it' s在0-4之間(我還包括'column> = 0'的條件) – SomeJavaGuy

+0

什麼是您正在嘗試閱讀的輸入? –

+0

@ Error404可能不是1-4的東西(比如''bla「')。問題出在'_nextInt();'正如_ @ KevinEsche_指出的那樣。 –

回答

3

你需要捕捉拋出的異常

else if (input.equals("c")) { 
    System.out.println("What column? (1-4)"); 

    try{ 
     int column = s.nextInt(); 
     s.nextLine(); 
     if (column <= 4){ 
      rotateColumn(currentarr,column - 1); 
      print(currentarr); 
      b++; 
     } 
     else 
      System.out.println("Invalid Input"); 
    }catch (InputMismatchException ex){ 
     System.out.println("Invalid Input"); 
    } 
1

嘗試讓行,然後解析它作爲一個int來代替。

else if (input.equals("c")) { 
    System.out.println("What column? (1-4)"); 
    String colStr = s.nextLine(); 
    try { 
     int column = Integer.parseInt(colStr); 
     if (column >= 1 && column <= 4){ 
     rotateColumn(currentarr, column - 1); 
     print(currentarr); 
     b++; 
     } 
     else 
     System.out.println("Invalid Input"); 
    } catch (Exception e) { 
     System.out.println("Invalid Input"); 
    } 

這將處理該用戶通過捕獲異常進入類似「錯誤輸入」的情況下,如果它不能解析它們的輸入爲整數。