タイトルに少し苦労しました。より正確に表現する方法がわかりませんでした。
Doubleこの問題が発生しています。ユーザーに 3 つの入力を求める方法がいくつかあります。入力ごとに、それが有効かどうか (たとえば、正の値かどうか) をチェックし、そうでない場合はIllegalArgumentException. 次に、メソッドが正しく機能しているかどうかを確認する Tester クラスを作成しました。メソッドによってスローされた例外をキャッチし、その特定の例外の原因となった入力をユーザーに再度尋ねることになっています。
3 つのメソッドはすべてスローしIllegalArgumentExceptionますが、エラー メッセージはそれぞれ異なります。とにかく(例外をキャッチするときに)どの入力がエラーを引き起こしているかを確認することはできますか?これが私のコードのサンプルです:
public class account
{
double value;
public account(double initialValue)
{
if (initialValue < 0)
{
throw new IllegalArgumentException("Initial value cannot be negative.");
}
value = initialValue;
}
public add(double addValue)
{
if (addValue < 0)
{
throw new IllegalArgumentException("Added value cannot be negative.");
}
value = value + addValue;
}
}
テスタークラスは次のようになります。
public class accountTester
{
public static void main(String[] args)
{
try
{
double initialValue = Double.parseDouble(JOptionPane.showInputDialog("Enter initial value"));
account acc = new account(initialValue);
double addValue = Double.parseDouble(JOptionPane.showInputDialog("Enter value to add"));
acc.add(addValue);
} catch (Exception e) {
System.out.println("Wrong ammount");
initialValue = Double.parseDouble(JOptionPane.showInputDialog("Re-enter ammount"));
}
}
IllegalArgumentExceptionしたがって、 「初期値を負にすることはできません」の場合にのみそのコードをスローするには、テスター クラスで何を変更する必要がありますか。
わかりにくかったらすいません。
編集:私の教授によると、私たちは do を使用することになっています
String error = e.toString;
if (error.contains("Added value cannot be negative.")
{
//DO CODE FOR FIRST ERROR
}
ただし、これが最も適切な方法ではないことはわかっています。