2011-12-25 14 views
1

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

これまでのところ私はその数をマイナスにすることはできませんでした。それが数字でないならば、私はエラーを投げる必要があります。私は次のコードしている :koersは数あるかどう

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()); 
      } 

のような私の主なルックスは、どのように私がチェックすることができます。 私は私のコードでエラーを試してみて、キャッチ入れることができます知っているが、私はこれがどこでどのようにエラーに対処するためのロジックに反すると思う:私の主な機能には、私はあなたがおそらく必要になる任意のNumberFormatException

+2

私はあなたが求めているもので混乱しています。 Double.parseDouble(args [0])は、NumberFormatExceptionをスローできるものです。なぜあなたのsetKoersメソッドにthrows節があるのか​​不明です。 – Corbin

答えて

2

NumberFormatExceptionDouble.parseDouble()があなたのために処理するので、あなたは必要ありません。 parseDouble()メソッドよりも適切な番号(この場合はDouble)でない場合は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()); 
    } 
0

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

+0

私は何かを見逃しているかもしれませんが、私が知る限り、Swingは決して言及されませんでした。 – Corbin

+0

@コービン:あなたは正しいです、そして私は間違っています。鋭い目に感謝します。 –

関連する問題