2016-02-08 32 views
-3

這裏是我的代碼應用程序崩潰,當我試圖比較整數

public void onClick(View v) 
{ 
    if (v == buttonOne) 
    { 
     TextView output = (TextView)findViewById(R.id.output); 
     output.append("1"); 
    } 

    else if (v == buttonTwo) 
    { 
     TextView output = (TextView)findViewById(R.id.output); 
     output.append("2"); 
    } 

    else if (v == buttonThree) 
    { 
     TextView output = (TextView)findViewById(R.id.output); 
     output.append("3"); 
    } 

    else if (v == buttonFour) 
    { 
     TextView output = (TextView)findViewById(R.id.output); 
     output.append("4"); 
    } 

    else if (v == buttonFive) 
    { 
     TextView output = (TextView)findViewById(R.id.output); 
     output.append("5"); 
    } 

    else if (v == buttonSix) 
    { 
     TextView output = (TextView)findViewById(R.id.output); 
     output.append("6"); 
    } 

    else if (v == buttonSeven) 
    { 
     TextView output = (TextView)findViewById(R.id.output); 
     output.append("7"); 
    } 

    else if (v == buttonEight) 
    { 
     TextView output = (TextView)findViewById(R.id.output); 
     output.append("8"); 
    } 

    else if (v == buttonNine) 
    { 
     TextView output = (TextView)findViewById(R.id.output); 
     output.append("9"); 
    } 

    else if (v == buttonZero) 
    { 
     TextView output = (TextView)findViewById(R.id.output); 
     output.append("0"); 
    } 

    else if(v == buttonEnter) 
    { 

     TextView output = (TextView)findViewById(R.id.output); 
     temp = Integer.parseInt(output.getText().toString()); 
     compareNumber(temp); 
     output.setText(""); 
    } 
} 

我試圖用按鈕來比較數字。例如,如果我按下buttonOne,它會附加1來堆疊。當單擊一個或多個數字後按下Enter鍵時,它會完全正常工作,但當我離開EditText而沒有輸入任何數字並按下按鈕時,應用程序停止。

請幫忙!

+2

請閱讀此:http://stackoverflow.com/questions/3988788/what-is-a-stack-trace-and-how-can-i-use-it-to-debug-my-application-errors並回來併發布你的堆棧跟蹤 –

+1

而這也太:http://stackoverflow.com/q/23353173/1270789 –

回答

2

的問題是在這條線

temp = Integer.parseInt(output.getText().toString()); 

當您嘗試使用parseInt()爲空字符串。它會崩潰。看看你的變量輸出

解決方案

您可以隨時加入這一行

if(editText.getText().length() != 0) 
+0

謝謝謝謝謝謝!我很感激。 – Eric

+0

@Eric這是我的榮幸。 –

1

你必須檢查的TextView是否爲空或沒有做與價值的東西,從EditText檢索之前申請的條件,然後將其解析爲int.您可以按如下方式進行檢查。

else if(v == buttonEnter) 
    { 
     TextView output = (TextView)findViewById(R.id.output); 
     String txt = output.getText().toString(); 
     if (!temp.matches("")) { 
      temp = Integer.parseInt(output.getText().toString()); 
    } 

另外,你爲什麼要在每個if循環中聲明Textview?你可以做到這一點如下

public void onClick(View v) 
{ 

    TextView output = (TextView)findViewById(R.id.output); 
    if (v == buttonOne) 
    { 
     output.append("1"); 
    } 
    else if (v == buttonTwo) 
    { 
     output.append("2"); 
    } 

    else if (v == buttonThree) 
    { 
     output.append("3"); 
    } 

    else if (v == buttonFour) 
    { 
     output.append("4"); 
    } 

    else if (v == buttonFive) 
    { 
     output.append("5"); 
    } 

    else if (v == buttonSix) 
    { 
     output.append("6"); 
    } 

    else if (v == buttonSeven) 
    { 
     output.append("7"); 
    } 

    else if (v == buttonEight) 
    { 
     output.append("8"); 
    } 

    else if (v == buttonNine) 
    { 
     output.append("9"); 
    } 

    else if (v == buttonZero) 
    { 
     output.append("0"); 
    } 

    else if(v == buttonEnter) 
    { 
     temp = Integer.parseInt(output.getText().toString()); 
     compareNumber(temp); 
     output.setText(""); 
    } 
} 
+0

非常感謝,它真的幫助 – Eric

0

這只是爲了讓你的代碼看起來不錯。爲您的textView創建一個整數數組。以舉例

private int[] numericBtn = {R.id.idzero,R.id.one, R.id.two, R.id.three, R.id.four,R.id.five, R.id.six, R.id.seven, R.id.eight, R.id.nine}; 


private int[] operationBtn = {R.id.buttonAdd,R.id.buttonMinus, R.id.buttonMultiply, R.id.buttonDivide}; 

爲您的數字按鈕創建一個onclick監聽器。像這樣

public void setNumericOnClickListener() { 
    View.OnClickListener listener = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Button id = (Button) v;     
      output.append(id.getText()); 

     } 
    }; 

    for (int id : numericBtn) { 
     findViewById(id).setOnClickListener(listener); 
    } 

} 

然後在OnCreate方法中調用此方法。運營商按鈕也一樣。快樂的編碼。

相關問題