在循环中从扫描仪获取异常

时间:2017-04-06 17:59:25

标签: java

我有一个从用户那里获取输入的代码。需要循环来继续询问输入是否格式正确。只要输入正确,程序运行正常。 PS。用户输入错误输入时失败。

  

异常:java.util.Scanner.nextLine(未知来源)中的java.util.NoSuchElementException

如果我使用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 :(得分:0)

您可以通过以下方式检查是否存在下一行:sc.hasNext()如果有,则返回true。您应该在致电sc.nextLine()

之前使用此功能