繁体   English   中英

Java:try(Scanner scan = new Scanner(System.in){}导致异常

[英]Java: try(Scanner scan = new Scanner(System.in) { } causing an exception

使用try(Scanner scan = new Scanner(System.in)) { }导致

线程“主”中的异常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";
}

您正在关闭System.in (全局变量)。 不要这样做。 到处都有

try(Scanner scan = new Scanner(System.in))

保证System.inclose (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: ");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM