当前位置: 首页 > 面试题库 >

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

舒嘉德
2023-03-14
问题内容

使用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.in将是close(d)。一旦它的close(d)你可以从它再次不读(或你得到你提到的Exception)。另外,您可以使用调试符号进行编译(或使用IDE的内置调试器或jdb进行调试)。该Scanner.close()Javadoc中说,(部分)

如果此扫描器尚未关闭,则其底层可读项也实现了该Closeable接口,则将close调用该可读项的方法



 类似资料:
  • 问题内容: 根据python文档,自python 2.5开始支持相对导入和内部包引用。我当前正在运行Python 2.7.3。因此,我尝试在自己的程序包中实现此功能,以便将其用于更简单的导入。我很惊讶地发现它引发了SyntaxError异常,我希望有人可以帮助您找到原因。 我设置了一个测试目录进行测试: 两个__init__.py模块都为空。其他模块是: 当我尝试导入second_level模块时

  • 我试图解组xml导致saxparser异常,因为元素的值有一个未正确关闭的标记元素。这是我得到的,我必须处理的。 这里是示例xml- 上面的xml和其他字符串一起作为命令的值,标签没有正确关闭,导致以下异常- [org.xml.sax.saxpasseeption;行号:1;列号:212;元素类型“ctag”后面必须跟有属性规范,” 将xml输入作为字符串阅读器提供给unMarshall 我有两个

  • 问题内容: 我想我发现了一个错误。也许不是,但是Super CSV不能很好地处理。 我正在使用MapReader解析具有41列的CSV文件。但是,我得到的是CSV- 而使我获得CSV的Web服务错了一行。“标题”行是制表符分隔的行,具有41个单元格。 而且“错误的行”是一个由制表符分隔的行,其中包含36个单元格,其内容没有任何意义。 这是我正在使用的代码: 我在上面提到的行中执行mapReader

  • 我在尝试执行Spring AOP时遇到了异常: 线程“main”org.springframework.beans.factory.beanCreationException:创建文件[C:\users\sonue\documents\learn\springaop\target\classes\com\sonu\springaop\dao\employeeedao.class]中定义的名为“em

  • 这篇文章是applicationcontext.xml中bean声明的连续性 我有一个使用Spring3和Hibernate4以及JSF2的小应用程序,当我运行我得到的应用程序时。 ManagedBean: 并且我有注入注释: 在EmployeeService中,我有如下注释: 更新2 ApplicationContext.xml: