代码
int weight = 0;
do {
System.out.print("Weight (lb): ");
weight = Integer.parseInt(console.nextLine());
if (weight <= 0) {
throw new IllegalArgumentException("Invalid weight.");
}
} while (weight <= 0);
跟踪
Weight (lb): Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.base/java.lang.Integer.parseInt(Integer.java:662)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at HealthPlan.main(HealthPlan.java:46)
运行程序时,出现此异常。我该如何处理?
我想输入一个整数作为weight
值。我还必须为height
使用一个整数值,但是我的程序要求输入的是boolean
和character
。
有人建议我使用Integer.parseInt
。
如果我需要发布更多代码,我很乐意这样做。
答案 0 :(得分:0)
在这种情况下,您只能将String转换为Integer。
Integer.parseInt("345")
但在这种情况下不是
Integer.parseInt("abc")
此行给出了例外
Integer.parseInt(console.nextLine());
使用此功能
Integer.parseInt(console.nextInt());
答案 1 :(得分:0)
有时候,这只是意味着您要将空字符串传递到Integer.parseInt()
:
String a = "";
int i = Integer.parseInt(a);
答案 2 :(得分:0)
我没有看到给出的解决方案:
int weight = 0;
do {
System.out.print("Weight (lb): ");
String line = console.nextLine();
if (!line.matches("-?\\d+")) { // Matches 1 or more digits
weight = -1;
System.out.println("Invalid weight, not a number: " + line);
} else {
weight = Integer.parseInt(line);
System.out.println("Invalid weight, not positive: " + weight);
}
} while (weight <= 0);
Integer.parseInt(String)
必须具有有效的整数。
也可能是:
try {
weight = Integer.parseInt(line);
} catch (NumberFormatException e) {
weight = -1;
}
这也有助于溢出,输入9999999999999999。