Создал консольный калькулятор, когда ввожу число ошибка NumberFormatException
public int run() {
int result = 0;
double a = 0;
double b = 0;
char operation = ' ';
System.out.println("Enter a first number");
Scanner scanner = new Scanner(System.in);
while (validNumber(scanner.next())) {
a = Double.parseDouble(scanner.nextLine());
break;
}
System.out.println("Enter a last number");
while (validNumber(scanner.nextLine())) {
b = Double.parseDouble(scanner.nextLine());
break;
}
System.out.println("Enter operation");
operation = scanner.nextLine().charAt(0);
result = (int) calc(a, b, operation);
System.out.println(result);
return result;
}
private boolean validNumber(String text) {
try {
Integer.parseInt(text);
return true;
} catch(NumberFormatException e) {
return false;
}
}
Для того, что бы не было ошибки NumberFormatException в вашем коде требуется:
читать scanner в строку и работать с ней
String input = scanner.next();
и дальше работаем с input.
Иначе после прочтения scanner-а функцией validNumber scanner будет пуст.
Убрать или затащить break под if. Сейчас Вы независимо от парсинга применяете break. Естественно while прерывается.
Пример правильно while:
while (true)
{
System.out.println("Enter a first number");
String input = scanner.next();
if (validNumber(input))
{
a = Double.parseDouble(input);
break;
}
System.out.println("Not a correct input");
}
Если просто нужна проверка на число, то можно сделать все проще(тут также учтено, что число может быть отрицательным)
private boolean validNumber(String text) {
return text.matches("[-+]?\\d+");
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Наткнулся на такой термин - "статический полиформизм"Не знал про такое сочетание
Раньше работало на версиях от 41, теперь не работает до 4
Здравствуйте! Пишу авторизацию на C# WPF MVVM в БД MySQL, используя EF6Необходимо написать команду, которая будет выполняться при нажатии на кнопку...