2016-08-24 4 views
1

私は宣言が、私は以前の自分自身の文字列に数字の入力をとっている java.lang.NumberFormatException:無効INT:「」

  1. 適切であると考えていjava.lang.NumberFormatException: Invalid int: error

    を取得しています。

  2. 以下の部分は合計を計算します。
  3. 2番目の部分は1番目の部分の続きです。クリックプログラムに

    protected void onCreate(Bundle savedInstanceState) 
    { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
    
        final EditText num1 = (EditText)findViewById(R.id.num1); 
        final EditText num2 = (EditText)findViewById(R.id.num2); 
        final EditText resu = (EditText)findViewById(R.id.resu); 
        resu.setFocusableInTouchMode(false); 
        resu.setFocusable(false); 
        resu.setClickable(false); 
        final Button plus = (Button)findViewById(R.id.plus); 
    
    
        final String n1 = num1.getText().toString(); 
    
        final String n2 = num2.getText().toString(); 
    

    :宣言は以下の通りです

plus.setOnClickListener(
    new Button.OnClickListener() { 
     public void onClick(View view) {   
      try{ 
       float sum = Integer.valueOf(n1) + Integer.valueOf(n2); 
       String a = Float.toString(sum); 
       a = a.trim(); 
       resu.setText(""+a); 
      }catch(Exception e){ 
       resu.setText(""+e); 
      } 
     }  
    ); 

答えて

2

EditTextが空の場合は、あなたのoncreate()にそれが返されますので、ごonlick()メソッド内に次のコードを移動します空の文字列( "")なので、ボタンをクリックしたときに値を取得する必要があります。その前の値ではありません。

final String n1 = num1.getText().toString(); 

final String n2 = num2.getText().toString(); 

へ:

plus.setOnClickListener(new Button.OnClickListener() { 
    public void onClick(View view) { 
     try { 
      final String n1 = num1.getText().toString(); 
      final String n2 = num2.getText().toString(); 
      float sum = Integer.valueOf(n1) + Integer.valueOf(n2); 
      String a = Float.toString(sum); 
      a = a.trim(); 
      resu.setText(""+a); 
     } catch(Exception e) { 
      resu.setText(""+e); 
     } 
    } 
}); 
+0

によってn1n2に空の文字列( "")をチェック!これは助けになった! どうすればこれらの2行を一度書き込んでも、新しいボタンを使わずに正常に実行できるのですか? –

+0

次のようなものを使用することができます:Integer.valueOf(これは(複数のボタンがあると仮定します) num1.getText()。toString())+ Integer.valueOf(num2.getText()。toString());それがあなたを助けた場合、この回答を正しいとマークしてください。 – JpCrow

+0

助けてくれてありがとう –

0

問題はfloatプリミティブ型への変換Integerオブジェクトの上に位置しています。私はあなたがコードをうまく動作するはずです入力全体番号を与えると思います。コード

float sum = Integer.valueOf(n1) + Integer.valueOf(n2);

しかし、それはあなたが適切なプリミティブデータ型にStringを変換するのに失敗しているNumberFormatException incounterするINORDERその後、全体の数はない場合。

そしてまた、あなたよりif(n1=="")

plus.setOnClickListener(new Button.OnClickListener() { 
     public void onClick(View view) { 

      try 
      { 
       final String n1 = num1.getText().toString();  
       final String n2 = num2.getText().toString(); 
       if(n1==""){ 
        n1="0"; 
       } 
       float sum = Float.valueOf(n1) + Float.valueOf(n2); 
       String a = Float.toString(sum); 
       a = a.trim(); 
       resu.setText(""+a); 
      } 

      catch(Exception e) 
      { 
       resu.setText(""+e); 
      } 
     } 
     }); 
関連する問題