1

私はJavaを学んでいて、通貨の変換を行う非常に単純なアプリケーションを作ろうとしています. レート、方向 (例: ユーロからドルへ、またはその逆) と金額を入力します。数値は有効な非負の数値です。

これまでのところ、数値が負にならないようにすることができました。数値でない場合はエラーをスローする必要があります。私は次のコードを持っています:

public void setKoers(double koers) 
            throws NegativeValueException, NumberFormatException{
    if (koers > 0 ) {
            this.koers=koers;
        } else {
            throw new NegativeValueException("negative number");
        }
}

そして私のメインは次のようになります

    try   {
            cal.setKoers( Double.parseDouble(args[0])); 

          } catch(NegativeValueException e) {
             System.out.println(e.getMessage());
          } catch (NumberFormatException e) {
             System.out.println( e.getMessage());
          }

では、数値かどうかを確認するにはどうすればよいkoersですか。コードでエラーを試行してキャッチできることはわかっていますが、これはエラーを処理する場所と方法のロジックに反すると思います。メイン関数では、NumberFormatExceptionをキャッチする必要があります。

4

2 に答える 2

2

NumberFormatExceptionあなたのためにそれを処理するので、あなたは必要ありませんDouble.parseDouble()。適切な数値 (この場合は a Double) でない場合、parseDouble()メソッドは a をスローNumberFormatExceptionします。

これが私がそれを書く方法です:(ただ取り出してくださいNumberFormatException

public void setKoers(double koers) throws NegativeValueException {
    if (koers > 0 ) {
            this.koers=koers;
        } else {
            throw new NegativeValueException("negative number");
        }
}

try{
    cal.setKoers( Double.parseDouble(args[0]));

    } catch(NegativeValueException e) {
        System.out.println(e.getMessage());
    } catch (NumberFormatException e) {
        System.out.println( e.getMessage());
    }
于 2011-12-25T23:39:34.447 に答える
0

ユーザーがプログラムに入力を受け入れて処理するように指示した場合、おそらく入力を検証する必要があります。コードのこの部分では 、try/catch ブロック内で入力を解析して文字列を数値に変換し、例外が発生した場合は、ユーザーにエラーを通知し、それ以上の処理を防ぎ、おそらく問題を解決します。入力フィールドがある場合。

于 2011-12-25T23:28:54.110 に答える