我有一个简单的方法,可以将命令打印到屏幕上,扫描用户的输入,然后将其作为字符串返回。如果用户输入无效,则通知用户并再次询问。这种方法效果很好,但我的导师提到我们应该始终关闭资源,所以我返回并添加了 close 方法,现在每次调用该方法时我都会收到 NoSuchElementException,无论用户输入如何。这是代码...
private String getUserString(String userCommand) {
System.out.println(userCommand);
Scanner scan = new Scanner(System.in);
String userinput = scan.nextLine().trim();
if (userinput.isEmpty()){
System.out.println("Invalid choice");
return getUserString(userCommand);
}
else {
return userinput;
}
}
异常总是指向用户输入作为 scan.nextLine().trim() 启动的行 注意*我在每个 return 语句之前的每一行上添加了 scan.close() ,但是我没有在上面包含它。