2016-08-24 53 views
1

我得到java.lang.NumberFormatException: Invalid int: errorjava.lang.NumberFormatException:無效INT:「」

我認爲聲明是合適的

  1. 我已經採取了數字輸入字符串中較早本身。
  2. 以下部分僅計算總和。
  3. 第二部分是第一部分的延續。下面

聲明中給出:

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

將下面的代碼你onlick()方法中,因爲在你的oncreate()如果EditText爲空,它會返回空字符串(「」),因此您需要在點擊按鈕時獲取該值,而不是在之前:

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空字符串( 「」)!這有幫助!然而,這會導致代碼重複每個按鈕(假設我有很多按鈕!) 我怎樣才能讓這兩行寫入一次,仍然正常運行(不使用新的按鈕) –

+0

你可以使用這樣的東西:Integer.valueOf( num1.getText()。toString())+ Integer.valueOf(num2.getText()。toString());請標記此答案爲正確的,如果它幫助你 – JpCrow

+0

它幫助,謝謝 –

0
問題

位於Integer目的是float原始類型轉換。我想如果你給一個輸入一個整數,那麼你的代碼應該可以正常工作。代碼

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

但是,如果它不是一個整數,然後以序incounter NumberFormatException你不能String轉換成相應的基本數據類型。

而且還通過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); 
      } 
     } 
     }); 
相關問題