扫描仪跳过我输入的机会

时间:2013-09-05 03:26:41

标签: 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 我不再收到错误(!)但是第二个扫描仪和随后的“如果”现在不起作用。 我确实有一个.close()但已删除它,这修复了第一次使用'scanner'

1 个答案:

答案 0 :(得分:1)

首先,要谨慎对待close()This是一个很好的参考。

这里似乎也有逻辑错误:

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

cchar。请注意,'0'0非常不同。您可能希望:while(c != '1' || c != '2');。您可能还需要更新代码的其他区域。

另一个逻辑错误,如果我在不输入任何内容的情况下按Enter键怎么办(psst:f.charAt(0)

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