我想获取 5 个数字的用户输入,然后通过拆分字符串将该输入更改为整数。但是我不断收到错误,上面写着:线程"main"java.lang.NumberFormatException中的异常:对于输入字符串:"。关于如何解决它的任何线索?
public class Exercise{
public static void main(String [] args){
Scanner scan = new Scanner(System.in);
System.out.println("Input Quizzes: ");
Scanner scan = new Scanner(System.in);
String quiz = scan.nextLine();
String [] part = quiz.split(" ");
int pq1 = Integer.parseInt(part[0]);
int pq2 = Integer.parseInt(part[1]);
System.out.println("Input Additionals: ");
String quiz1 = scan.nextLine();
String [] part1 = quiz1.split(" ");
int pqa1 = Integer.parseInt(part1[0]);
int pqa2 = Integer.parseInt(part1[1]);
System.out.println("Input Recitation: ");
int recitation = scan.nextInt();
System.out.println("Input Seatworks: ");
int swhw1 = scan.nextInt();
System.out.println("Input Exercises ");
String exp = scan.nextLine();
String [] part2 = exp.split(" ");
int ex1 = Integer.parseInt(part2[0]),
ex2 = Integer.parseInt(part2[1]),
ex3 = Integer.parseInt(part2[2]),
ex4 = Integer.parseInt(part2[3]),
ex5 = Integer.parseInt(part2[4]);
}
}
可能会导致 2 种情况:
字符串包含它们不是数字的其他字符
数字之间有多个空格,因此您在拆分数组中获取超过 5 个单元格(这些单元格包含空字符串 ")
所以.. 在拆分命令之前添加此行:
exp = exp.trim().replaceAll(" +", " ");
这将解决问题!并且还建议使用try&catch
这是完整的代码:
public static void main(String [] args){
Scanner scan = new Scanner(System.in);
System.out.println("Input Exercises ");
String exp = scan.nextLine();
exp = exp.trim().replaceAll(" +", " ");
String [] part2 = exp.split(" ");
int ex1 = Integer.parseInt(part2[0]),
ex2 = Integer.parseInt(part2[1]),
ex3 = Integer.parseInt(part2[2]),
ex4 = Integer.parseInt(part2[3]),
ex5 = Integer.parseInt(part2[4]);
}
发生这种情况是因为使用了下一个Int。
我建议首先使用 nextLine() 读取整行,然后使用 Integer.parseInt() 方法来验证整数输入。
喜欢这个:
Scanner scan = new Scanner(System.in); String s = scan.nextLine();
try{
Integer.parseInt(s); } catch(NumberFormatException ex){
System.out.println("Its not a valid Integer"); }
或者您可以在扫描仪之前放置下一行(不建议这样做)
public static void main(String [] args){
Scanner scan = new Scanner(System.in);
System.out.println("Input Quizzes: ");
scan = new Scanner(System.in);
String quiz = scan.nextLine();
String [] part = quiz.split(" ");
int pq1 = Integer.parseInt(part[0]);
int pq2 = Integer.parseInt(part[1]);
System.out.println("Input Additionals: ");
String quiz1 = scan.nextLine();
String [] part1 = quiz1.split(" ");
int pqa1 = Integer.parseInt(part1[0]);
int pqa2 = Integer.parseInt(part1[1]);
System.out.println("Input Recitation: ");
int recitation = scan.nextInt();
System.out.println("Input Seatworks: ");
int swhw1 = scan.nextInt();
scan.nextLine();
System.out.println("Input Exercises ");
String exp = scan.nextLine();
String [] part2 = exp.split(" ");
int ex1 = Integer.parseInt(part2[0]),
ex2 = Integer.parseInt(part2[1]),
ex3 = Integer.parseInt(part2[2]),
ex4 = Integer.parseInt(part2[3]),
ex5 = Integer.parseInt(part2[4]);
}