2017-06-21 16 views
-1

私は現在、自分の電卓を開発していると私はそれの内側にプラスボタンを押したとき、私はNumberFormatExceptionを取得しています: -Number形式例外

if(e.getSource() == p) { 
    String a[] = new String[2]; 
    double d[] = new double[2]; 
    for(int i =0; i<2; i++) { 
     a[i] = tf.getText(); 
     d[i] = Double.parseDouble(a[i]); 
     System.out.println("First array is "+d[i]); 
     sum = sum + d[i]; 
     tf.setText(null); 
    } 
} 

私は何を得ていませんよ数値フォーマットの例外は、私の文字列が空であることを私に伝えていますが、私は今何をする必要があるのか​​を調べています。

please click here for errors

+0

を解決します私はあなたがテキストエリアが空になった理由を確認するために、あなたのデバッガでプログラムをデバッグ示唆しています。 –

+0

プログラムは正常に動作しますが、プラスボタンを押すと例外が発生します –

+0

空でないと予想されるテキストが空の場合、プログラムが正しく動作しません。 –

答えて

0

私はあなたが、1 + 2と入力を入力しているので、あなたがクリックしたときにプラス、あなたが保管された第2の数は、したがって、エラー

1

あなたが解析できないnullであると仮定しています+ inside Double.parseDouble(String string)

文字列に解析可能なdoubleが含まれていない場合は、NumberFormatExceptionをスローします。

+0

さて、私は文字列を二重に変換していますが、二重変数を入力したときに整数変数を入力していますが、エラーが出ませんでした –

+0

しかし、入力された数値は整数か二重または他の種類のものです –

+0

@devjoshi 'tf.getText();の印字値それは何ですか? – Aryan

0

これはあなたの問題

if(e.getSource() == p) { 
    String a[] = new String[2]; 
    double d[] = new double[2]; 
    for(int i =0; i<2; i++) { 
     a[i] = tf.getText(); 
     if(a[i].contains("[a-zA-Z]+") == false){ 
      d[i] = Double.parseDouble(a[i]); 
      System.out.println("First array is "+d[i]); 
      sum = sum + d[i]; 
      tf.setText(null); 
     } 

    } 
} 
+0

私は文字列をdoubleに変換していますが、ユーザーがdoubleを入力しても問題はありませんが、ユーザーが整数を入力すると例外が発生します。 –

+0

整数をdoubleにキャストできます。 – Akash