我在之前呼叫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:
答案 0 :(得分:1)
你的问题是对nextLong()的调用是读取下一个长号,而不是后面的换行符。因此,当您拨打下一行时,您将从刚刚读取的数字的末尾返回空行,直到换行。例如,如果我这样做:
System.out.println("'" + sc.nextLong() + "'");
System.out.println("'" + sc.nextLine() + "'");
System.out.println("'" + sc.nextLine() + "'");
...输入42& 63我会打印出来的:
'42'
''
'63'
您需要始终使用nextLong()或nextLine(),但不要混用它们。