Первый пост, так что мои извинения, если это было сделано неправильно (и я также относительно новичок в программировании, поэтому любые посторонние советы также приветствуются).
Итак, я написал базовую программу-калькулятор на Java. В настоящее время он работает хорошо, но у меня возникла особая проблема с NumberFormatException. Вот код:
private static double spaceTestAndConvert(String numInput){
Scanner input= new Scanner(System.in);
if (numInput.equalsIgnoreCase("quit")){
System.exit(1);
}
else if(numInput.equalsIgnoreCase("C/E")){
Restart();
}
try{
return Double.parseDouble(numInput.trim());
}
catch(NumberFormatException nfe){
numInput = "";
System.out.println("Please enter only one number without any spaces or letters: ");
numInput = input.nextLine();
spaceTestAndConvert(numInput.trim());
return Double.parseDouble(numInput.trim());
}
}
Проблема заключается в том, что после попытки принудительно вызвать ошибку, введя несколько входных данных, которые вызовут исключение NumberFormatException, а затем ввести допустимый ввод, программа вылетит из-за исключения NumberFormatException, ссылаясь на предыдущий недопустимый ввод.
I.E. -
"1 2 3"
loops back
"1 2 q 3"
loops back
"12q3 3 sqw 1"
loops back
"12"
crash - Exception in thread "main" java.lang.NumberFormatException: For input string: "12q3 3 sqw 1"
Это происходит только после нескольких случаев исключения. Мне интересно, почему это делается. Любые советы о том, как исправить это или объяснение того, что происходит? Если вам нужна какая-либо другая часть кода, пожалуйста, дайте мне знать! Спасибо!
numInput
. Но как только метод завершил работу, это значение исчезло. Таким образом, в нижней части блокаcatch
вы возвращаете значениеnumInput
первого вызова — вы просто выбросили значение из второго вызова. - person Dawood ibn Kareem   schedule 14.11.2016