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.