使用try(Scanner scan = new Scanner(System.in)) { }
导致
线程“main”中的异常java.util.NoSuchElementException
当我尝试调试它时说
变量信息不可用,源代码编译时没有-g选项。
并显示以下代码
public Scanner(InputStream source) {
this(new InputStreamReader(source), WHITESPACE_PATTERN);
}
我使用此行的方法之一:
protected String loginName(){
String username;
String password;
try (Scanner scan = new Scanner(System.in)) { // This line is causing the error.
System.out.print("Enter Username: ");
username = scan.next();
System.out.print("Enter Password: ");
password = scan.next();
}
if(getUsernamesList().contains(username))
if(password.equals(getPasswordsList().get(getUsernamesList().indexOf(username)))) return username;
else return "-1";
else return "-1";
}
答案 0 :(得分:4)
您正在关闭System.in
(全局变量)。 请,不要这样做。无处不在
try(Scanner scan = new Scanner(System.in))
保证System.in
为close
(d)。一旦它close
(d)你再也无法从中读取(或者你得到你提到的Exception
)。此外,您可以使用调试符号进行编译(或使用IDE的内置调试器或适用的jdb进行编译)。 Scanner.close()
Javadoc说(部分),
答案 1 :(得分:2)
您是否尝试过不尝试使用?
String username;
String password;
Scanner scan = new Scanner(System.in);
System.out.print("Enter Username: ");