首页 > 解决方案 > java.util.InputMismatchException 正在发生

问题描述

我正在尝试在此代码中输入值,但得到一个

java.util.InputMismatchException

我已经尝试了很多次,但仍然没有得到正确的。(编译正常)

import java.util.Scanner;

class Test {
    String name;
    int rollno;

    Test(String x, int y) {
        this.name = x;
        this.rollno = y;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Test[] t = new Test[2];

        for(int i = 0; i<2 ;i++) {
            String s = sc.nextLine();
            int x = sc.nextInt();
            t[i] = new Test(s,x);
        }

        for(int j = 0 ; j<2 ; j++) {
            System.out.println(t[j].name + "----" + t[j].rollno);
        }
    }
}

样本输出:

java Test
vinod
24
kumar
Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:864)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextInt(Scanner.java:2117)
    at java.util.Scanner.nextInt(Scanner.java:2076)
    at Test.main(test4.java:22)

标签: java

解决方案


String s = sc.nextLine();
int x = sc.nextInt();
sc.nextLine();  //  <-- switch to the next line after input int value
t[i] = new Test(s, x);

完整代码可能如下所示:

public static void main(String... args) {
    for (Test test : readData(2))
        System.out.println(test.name + " ---- " + test.rollno);
}

private static Test[] readData(int total) {
    try (Scanner scan = new Scanner(System.in)) {
        Test[] data = new Test[total];

        for (int i = 0; i < data.length; i++, scan.nextLine())
            data[i] = new Test(scan.nextLine(), scan.nextInt());

        return data;
    }
}

推荐阅读