私は計算機として使用するGUIを持っています。数値以外の値を入力すると、意図したとおりNumberFormatExceptionがスローされます。しかし、 "23423f"のような数字を入力すると、プログラムはフロートに入っていると思っているように思えますが、最後のfのために例外はスローされません。フロートが例外をスローさせるにはどうすればいいですか?
現在、私は入力セクションをtry catchブロックに入れています。ここで、double型に解析し、NumberFormatExceptionがある場合はそれをキャッチします(数値は2倍に解析できるためです) 0以外の入力に対してif文からIllegalArgumentExceptionをスローする別のキャッチブロック
これは単なる推測ですが、最後のfだけが例外をスローしない理由はわかりません。あなたが説明した入力が有効なフロート/ダブル番号ですので、あなたはそれを解析することができることを期待するので、あなたの理論は、おそらく正しいよう
try
{
// get the total sales. the input is a string
stringInput = salesInputField.getText();
double validAmount = Double.parseDouble(stringInput);
if (validAmount < 0)
throw new IllegalArgumentException();
// calculate the sales and county tax
stateTaxes = validAmount * STATE_TAX;
countyTaxes = validAmount * COUNTY_TAX;
// display a message dialog showing the miles
JOptionPane.showMessageDialog(null, "State Sales Tax: " + percent.format(stateTaxes) + "\n" +
"County Sales Tax: " + percent.format(countyTaxes) + "\n",
"Taxes Owed",
JOptionPane.PLAIN_MESSAGE);
}
catch (NumberFormatException error)
{
JOptionPane.showMessageDialog(null, "Invalid Amount", "Input Error", JOptionPane.ERROR_MESSAGE);
}
catch (IllegalArgumentException error)
{
JOptionPane.showMessageDialog(null, "Invalid Amount", "Input Error", JOptionPane.ERROR_MESSAGE);
}
「1.2e + 3」のように指数部に「e」を加えた場合は、「d」も使用できます。 – Thilo