首页 > 解决方案 > 如果程序不等待输入,如何使用扫描仪修复“未找到行”异常

问题描述

完全披露,我是 java 新手,但我找不到适合我的问题的修复程序。

我正在做一个文本冒险作为学校的练习,我只是试图使用 java.util.Scanner 从用户那里获取输入,它在同一类的单独方法中完美地工作,同时使用几乎完全相同的代码。

我不断收到异常:

java.util.NoSuchElementException:找不到行

这似乎是因为程序没有等待用户输入。

我尝试添加一个 if else 语句来检查扫描仪中是否有任何输入,当程序应该为其内容设置一个字符串类型变量并且它总是出现空时。

问题代码:

System.out.println("In which direction would you like to move?");
Scanner reader = new Scanner(System.in);
String sDirection = reader.nextLine(); //This line specifically.
reader.close();

然而这段代码工作正常:

System.out.println("Do you accept this quest?(y/n)");
Scanner reader = new Scanner(System.in);
String sTemp = reader.nextLine();
reader.close();
char answer = sTemp.charAt(0);
return answer;

在问题代码中,扫描仪应记录用户的输入(北、南、东或西),sDirection然后设置为该字符串并在 if else 语句中使用。但是,在用户有机会输入任何内容之前,程序会返回“No line found”异常。

标签: javajava.util.scanner

解决方案


停止关闭扫描仪。当您这样做时,它会关闭底层流,因此无法进一步阅读。

reader.close();从您的所有代码中删除。

此外,您应该Scanner只创建一次并将其传递给需要它的方法。


推荐阅读