2016-07-20 3 views
1

電卓アプリを開発しました。 2つの入力num1とnum2が必要です。 2つの入力を与えると、算術プロセスはうまく動作しています。しかし、私は任意のボタンをクリックするとアプリが閉じられた、任意の入力せずに(サブ、MUL、除算を追加)し、エラーを示し、「残念ながら、Calcは停止しました。実行中のエラーアンドロイドスタジオ

public void onButtonClick(View v){ 
    EditText e1 = (EditText)findViewById(R.id.editText); 
    EditText e2 = (EditText)findViewById(R.id.editText2); 
    TextView t1 = (TextView)findViewById(R.id.textView); 
    float num1 = Integer.parseInt(e1.getText().toString()); 
    float num2 = Integer.parseInt(e2.getText().toString()); 
    float sum = num1 + num2; t1.setText(Float.toString(sum)); 
} 
+0

を検証メソッドを追加しますか..? –

+0

ボタンの 'onClick()'に 'NullPointerException'がある可能性があります。 –

+0

コードを見れば簡単な解決策になるでしょう。 – Opiatefuchs

答えて

0

私は 'editText'にnullという値があり、nullでないという条件をチェックせずにnull値を浮動小数点に変換しているからです。 変換前に、editTextがnullであるかどうかを確認してください。 this:

あなたのコードを投稿することができ
if(e1.getText().toString()!="" && e2.getText().toString()!="") 
{ 
    float num1 = Float.parseFloat(e1.getText().toString()); 
    float num2 = Float.parseFloat(e2.getText().toString()); 
} 

そして、あなたは変換のために「フロート」を使用してはならない「のInt」

+0

空もチェックすると、おそらく空の文字列が返されます。 – SurenSaluka

+0

If(e1.getText()!= "")..これを両方のテキストボックスに対して行います – SurenSaluka

0

この

String mNum1="",mNum2=""; 

    mNum1=e1.getText().toString(); 
    mNum2=e2.getText().toString(); 

    if(!mNum1.equalsIgnoreCase("") && !mNum2.equalsIgnoreCase("")) 
    { 

    float num1 = (float) Double.parseDouble(mNum1); 
    float num2 = (float) Double.parseDouble(mNum2); 
    float sum = num1 + num2; 
    System.out.println("sum"+String.valueOf(sum)); 

    t1.setText(String.valueOf(sum)); 


    } 
をお試しください
1

ジャストにOnclick

private boolean validation(){ 

    int error = 1; 

    if(num1.getText().toString.equals("")){error = error + 1;} 

    if(num2.getText().toString.equals("")){error = error + 1;} 

    if(error == 0){return true;} else { return false; } 

    }