使用Scanner读取数字和文本时的InputMismatchException

时间:2016-01-02 05:38:48

标签: java java.util.scanner inputmismatchexception

只要x不等于numOfContestans的值,我希望用户输入一行文字。当我运行代码时,我得到一个InputMismatchException。有没有人知道如何解决这个错误?

try {
    int numOfContestants = scan.nextInt();
    int problems = scan.nextInt();
    scan.nextLine();
    int x = 0;

    while (x != numOfContestants) {
        String input = scan.nextLine();
        x++;
    }
    System.out.println(problems);
} catch(InputMismatchException e) {
    System.out.println("Something went wrong");
}

1 个答案:

答案 0 :(得分:1)

您没有列出导致问题的输入。如果您尝试此输入,

3
2
line1
line2
line3

nextInt不读取行尾的CR / LF。第一次调用nextLine是空的。循环运行正确的次数,但第一次传递不会读取完整的行。阅读完问题后,请阅读下一行。

int problems = scan.nextInt();        
String input = scan.nextLine();

您也可以输入数据,使其看起来像

3
2 line1
line2
line3

然后你的代码就可以了。

只要正确输入了整数,我就无法生成错误。

我不知道nextLine如何导致TypeMismatchException。我已经运行了此代码,并且只有在输入错误的整数时才会导致此类错误。请提供导致错误的输入。