Java:尝试(扫描程序扫描=新扫描程序(System.in){}导致exception
使用try(Scanner scan = new Scanner(System.in)) { }
正在导致
线程“main”java.util.NoSuchElementException中的exception
当我尝试调试它说
变量信息不可用,源代码编译时没有-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"; }
你正在关闭System.in
(一个全局变量)。 请不要这样做。 无处不在
try(Scanner scan = new Scanner(System.in))
保证System.in
将close
(d)。 一旦它close
(d)你再也无法读取它(或者你得到你提到的Exception
)。 此外,您可以使用调试符号进行编译(或使用IDE的内置调试器或jdb(如果适用)进入它)。 Scanner.close()
Javadoc说(部分),
如果此扫描程序尚未关闭,那么如果其底层可读也实现了
Closeable
接口,那么将调用可读的close
方法
你尝试过不尝试吗?
String username; String password; Scanner scan = new Scanner(System.in); System.out.print("Enter Username: ");