上一次Long输入后的Integer输入的NumberFormatException

时间:2015-03-16 12:32:53

标签: java exception netbeans input error-handling

我在之前呼叫NumberFormatException输入后呼叫Integer输入时收到Long。以下是我的代码段

            System.out.print("Student ID: ");
            studentID = sc.nextLong();
            System.out.print("Student Number: ");
            studName= Integer.parseInt(sc.nextLine());

错误输出如下

Exception in thread "main" java.lang.NumberFormatException: For input string: ""
Student Name:   at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:592)
    at java.lang.Integer.parseInt(Integer.java:615)
    at student.StudentClient.main(StudentClient.java:68)
Java Result: 1

我可以知道如何解决此错误?


我使用的是sc.nextInt()。但是,在我的代码的开头:

        System.out.println("\nMENU 1-QUIT / 2-ADD STUDENT");
        option = option = sc.nextInt();

        if (option == 1) {
            System.exit(0);
        }
        if (option == 2) {
            studentIndex++;
            studentList[studentIndex] = new Student();
            System.out.print("Student Title (Mr/Mrs): ");
            studentTitle = sc.nextLine();
            System.out.print("Student First Name: ");
            firstName = sc.nextLine();

上述代码的输出跳过了1x输入。这就是:

Student Title: Student First Name: 

1 个答案:

答案 0 :(得分:1)

你的问题是对nextLong()的调用是读取下一个长号,而不是后面的换行符。因此,当您拨打下一行时,您将从刚刚读取的数字的末尾返回空行,直到换行。例如,如果我这样做:

System.out.println("'" + sc.nextLong() + "'");
System.out.println("'" + sc.nextLine() + "'");
System.out.println("'" + sc.nextLine() + "'");

...输入42& 63我会打印出来的:

'42'
''
'63'

您需要始终使用nextLong()或nextLine(),但不要混用它们。