これは間違って行われた場合、私の謝罪です(また、プログラミングにも比較的新しいので、無関係のヒントも高く評価されます)。Java - Try/Catch 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。私は有効な入力を取得すると、文字列をダブルに解析する必要があります。そして、その価値を返す。 –