java - 从循环中的扫描仪获取异常

标签 java

我有一个接受用户输入的代码。需要循环来不断询问输入的格式是否不正确。只要输入正确,程序就可以正常运行。 附言。当用户输入错误的输入时,它会失败。

Exception: java.util.NoSuchElementException at java.util.Scanner.nextLine(Unknown Source)

如果我使用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();
}

最佳答案

您可以通过执行以下操作来检查是否有下一行: sc.hasNext() 如果有则返回 true。您应该在调用 sc.nextLine()

之前使用它

关于java - 从循环中的扫描仪获取异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43262551/

相关文章:

java - 如何为json对象编写正则表达式?

java - 如果从 JAR 启动,Jetty + Jersey 嵌入式服务器将无法工作

Java 程序特化 - 它是什么?我不明白

java - C++ JNI想要安装Mac Legacy JRE6

java tomcat : only a type can be imported. com.a.B 解析为一个包

java - java中使用double大于或等于

java - 在 Ubuntu 12.04 (GTK) 下改进 JFileChooser

java - 在私有(private)方法 createaccountID() 中创建唯一 id,而不使用 uuid

java - 理解Java中的一个概念

java - 如何在 Java 7 中使用默认访问修饰符访问构造函数