2017-04-06 63 views
1

我有一個代碼,它接受來自用戶的輸入。必須循環詢問輸入是否格式不正確。只要輸入正確,程序就能正常工作。 PS。當用戶輸入不正確的輸入時會失敗。從循環中的掃描器獲取異常

例外:java.util.NoSuchElementException在java.util.Scanner.nextLine(來源不明)

如果我使用BufferedReader,我沒有問題。 它只與Scanner失敗。 感謝您的任何澄清。

public String getUserInput(String prompt) { 
    String inputLine = null; 
    Scanner sc = new Scanner(System.in); 

    while(true){ 
     inputLine = null; 
     System.out.println(prompt + " "); 

     inputLine = sc.nextLine(); 

     if(inputLine.length() == 2 && 
      inputLine.charAt(0) >= 'a' && inputLine.charAt(0)<='g' && 
      inputLine.charAt(1) >= '0' && inputLine.charAt(1)<='6'){ 
       break; 
     } 
     else{ 
      System.out.println("You entered your guess incorrectly."); 
      System.out.println("Please enter your guesses with ranges a through g and 0 through 6."); 
     } 
    } 
    sc.close(); 
    return inputLine.toLowerCase(); 
} 
+1

之前,您應該使用此選項輸入失敗的輸入是 –

+0

而例外是...? – tnw

+0

這似乎對我很好嗎?你在期待什麼? –

回答

0

您可以通過檢查是否有下一行:sc.hasNext()如果有,則返回true。在致電sc.nextLine()