첫 번째 게시물 그래서 내 사과는 이것이 잘못 수행 된 경우 (또한 프로그래밍에 비교적 익숙하지 않으므로 아무 관계없는 팁도 높이 평가됩니다).Java - 시도/캐치 NumberFormatException은 이전 값을 사용합니까?
그래서 저는 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"
예외가 여러 번 발생한 후에 만 발생합니다. 왜 이렇게하는지 궁금합니다. 이 문제를 해결하는 방법에 대한 조언이나 일어난 일에 대한 설명이 있습니까? 코드의 다른 부분이 필요하면 알려주십시오. 감사!
"3 12q3"을 입력 할 때 충돌이 발생합니까? – Matt
return spaceTestAndConvert (numInput.trim())을 반환하겠습니까? – kirbyquerby
아니요. 적어도 처음 들어서는 시도는 아닙니다. 여러 번 입력 한 다음 유효한 입력을 입력하고 추락했습니다 (질문의 예와 유사). @kirby - Nah. 유효한 입력을 얻으면 문자열을 이중으로 구문 분석해야합니다. 그리고 그 가치를 되돌려 놓습니다. –