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, но моя программа запрашивает ввод, которые booleanс и characterтакже.

Кто-то предложил мне использовать Integer.parseInt,

Если мне нужно разместить больше кода, я был бы рад сделать это.

1 ответ

Иногда это просто означает, что вы передаете пустую строку в Integer.parseInt():

String a = "";
int i = Integer.parseInt(a);

В этом случае вы можете преобразовать String в Integer.

Integer.parseInt("345")

но не в этом случае

Integer.parseInt("abc")

Эта строка дает исключениеInteger.parseInt(console.nextLine());

Вместо этого используйте этоInteger.parseInt(console.nextInt());

Поскольку я не видел данного решения:

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) должен быть указан действительный int.

Также возможно:

    try {
        weight = Integer.parseInt(line);
    } catch (NumberFormatException e) {
        weight = -1;
    }

Это также поможет с переполнением, введя 9999999999999999.

Другие вопросы по тегам