java - 扫描仪跳过我的输入机会

标签 java exception java.util.scanner

虽然这可能完全是微不足道的,但由于我缺乏经验,我陷入了困境:这行代码

String a = scanner.nextLine();

我看到以下错误

 java.util.NoSuchElementException: No line found

我的印象是,当涉及使用扫描仪数据的操作遵循扫描仪的使用时,它将等待输入。这个扫描仪根本让我没有机会输入我的输入,让我只能进行尝试使用不存在的数据的操作。

这是完整的相关代码。忘记它的低效率。

System.out.println(FactBank_QA.qA[ourRANDOM]);
        Scanner scanner = new Scanner (System.in);
        if (scanner.hasNext()){
            String a = scanner.next();
            char b = (char)a.charAt(0);
            if (b == '*') System.exit(0);
        }
        System.out.println(FactBank_QA.qA[ourRANDOM+1]);
        char c; String f = "0";
        do{
            if (scanner.hasNext()){
                f= scanner.next();
            }
                c = (char)f.charAt(0);
        }while(c != 1 || c != 2);
        if (c == 1) {           
        FactBank_QA.qA[ourRANDOM] = ""; 
        FactBank_QA.qA[ourRANDOM+1] = "";
        }

异常来自第一个,第二个未到达 也谢谢你的提示。 -更新了代码并删除了.close 我不再收到错误(!),但是第二个扫描仪和后续的“if”现在不起作用。 我确实有一个 .close() 但已将其删除,这修复了“扫描仪”的第一次使用

最佳答案

首先,请注意调用 close() 的位置。 This是一个很好的引用。

您在这里似乎也有逻辑错误:

do{
    if (scanner.hasNext()){
        f= scanner.next();
    }
        c = (char)f.charAt(0);
}while(c != 1 || c != 2);

c 是一个char。请记住,'0'0 有很大不同。您可能需要:while(c != '1' || c != '2');。您可能还需要更新代码的其他区域。

又一个逻辑错误,如果我不输入任何内容就按下回车键怎么办? (psst:f.charAt(0))

还有一点:while(c != '1' || c != '2') 是一个无限循环,因为 c 永远不可能同时等于 '1' 和 '2'。

关于java - 扫描仪跳过我的输入机会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18627233/

相关文章:

java - 尽管我已经实现了 'Serializable',但为什么我收到 NotSerializedException 异常

java - 使用 Java Scanner 读取长类型 - 字符限制?

java - 为什么使用 java 扫描仪从 txt 文件读取的字符串不等于相同的字符串?

java - Scanner 类的 nextInt 方法是 Java 中的访问器还是修改器?

java - SDK设置失败 : Error:Module 'app' : platform 'Google Inc.:Google APIs:21' not found

java - 查找包含 1 到 100 之间数字的 vector 中重复的数字

java - JavaFX 中的 Unicode 补充平面

java - 从 List<String> Java 解析

.net - Entity Framework 错误 - "The EntityContainer name must be unique"

Java 时间单位错误