为什么在此代码中抛出java.util.InputMismatchException?

时间:2016-03-29 13:31:24

标签: java

这是我的代码:

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) {
            int n = in.nextInt();
            int m = in.nextInt();
            String s = in.nextLine();
            for (int i = 0; i < m; i++) {
                int pos = in.nextInt();    // <- Line 14
                char c = (char)in.nextByte();
                s = s.substring(0, pos) + c + (pos + 1 < n ? s.substring(pos + 1) : "");
                System.out.println(f(s));
            }
        }
    }
}

输入后

10 3 .b..bz....

该程序立即引发异常:

Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:909)
    at java.util.Scanner.next(Scanner.java:1530)
    at java.util.Scanner.nextInt(Scanner.java:2160)
    at java.util.Scanner.nextInt(Scanner.java:2119)
    at Test.main(Test.java:14)

我甚至没有机会输入posc

有人能告诉我这个片段有什么问题吗?提前谢谢。

1 个答案:

答案 0 :(得分:3)

int pos = in.nextInt();

对于无法转换为整数的b的输入。这就是抛出异常的原因。