使用扫描仪时没有此类元素异常

No such element exception working with a Scanner

提问人:CaMiiN03 提问时间:4/17/2022 最后编辑:CaMiiN03 更新时间:4/17/2022 访问量:85

问:

我在使用扫描仪时遇到了问题,我不知道如何解决它,这在 Java 中有点新。我创建了一个菜单来读取用户通过扫描仪提供的输入字符,并通过以下循环从菜单中读取选项:

/**
 * Constant to exit the menu.
 */
private static final char EXIT = 'E';

public void run() {
    char option = EXIT;
    do {
        menu.show();
        option = menu.readOption();
        
        try {
            processOption(option);
        } catch (RuntimeException exception) {
            handleSystemError(exception);
        } catch (Exception exception) {
            handleUserError(exception);
        }
    } while (option != EXIT);
    
}

这是 readOption 方法的作用:

public char readOption() {
    return Console.readChar(" Option ");
}

这就是 readChar 方法的作用:

public static char readChar(String msg) {
    out.println( msg + ": ");
    keyboard.useDelimiter(System.lineSeparator());
    char res = keyboard.next().charAt(0);
    keyboard.reset();
    return res;
}

问题是,第一次表演的循环工作得很好。该程序正常工作。但是在第一次表演之后,当它再次启动时,在它读取 Option 的行中,它会抛出一个 NoSuchElementException,我已经花了很多时间试图解决它,但我不知道该怎么做。显然问题出在readChar方法中,当我尝试执行“keyboard.next()”时,它会抛出no such element异常。无法解释它第一次有效,第二次无效。第一次表演时,它会等待我按照我的预期引入一个字符,但在第二个性能中,虽然我希望引入一个字符,但当“keyboard.next()”时,它会抛出提到的异常。我的扫描仪显然有问题,我希望有人能在这里找到问题。非常感谢大家。

Java 循环 java.util.scanner nosuchElementException

评论


答:

0赞 CaMiiN03 4/17/2022 #1

多亏了这个页面,我终于找到了解决它的方法: Solucione el error NoSuchElementException en Java

问题是,由于这个程序的大小,我不得不同时使用2个扫描仪,当我关闭其中一个扫描仪时,它导致另一个停止工作,引发该异常。