NumberFormatException:对于输入字符串:“”?

时间:2018-06-26 12:13:00

标签: java exception-handling string-parsing numberformatexception

代码

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使用一个整数值,但是我的程序要求输入的是booleancharacter

有人建议我使用Integer.parseInt

如果我需要发布更多代码,我很乐意这样做。

3 个答案:

答案 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。