java - 如果程序不等待输入,如何使用扫描仪修复“未找到行”异常
问题描述
完全披露,我是 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”异常。
解决方案
停止关闭扫描仪。当您这样做时,它会关闭底层流,因此无法进一步阅读。
reader.close();
从您的所有代码中删除。
此外,您应该Scanner
只创建一次并将其传递给需要它的方法。
推荐阅读
- firebase - React Native Firebase,equalTo()被错误地应用了吗?
- c# - 如何将多个 LINQ Include() 语句分配给一个变量以供代码重用?
- json - Spring Boot Ajax 解析错误 - 无法将对象返回到 ajax 成功 fn
- linux - 查找进程启动时间“/proc/pid”创建时间或“ps ef”命令哪个更可靠
- python - 删除列索引pandas python
- replace - 使用 Autohotkey 替换剪贴板中的变音符号
- git - 获取标签之前/中的所有提交以使用 Git cmd 或 GitHub API
- javascript - 无法访问 React Redux Form 组件中的值
- python - 如果元素不是无,则在列表中添加元素的优雅方式
- python - Python 在 true 时将值增加 100