2012-06-05 39 views
0

任何人都可以看看下面的代碼並指出明顯的錯在哪裏?當editText保留空白時,該程序會給出錯誤,並且只有在所有信息都存在時才進行計算。目前該程序在文本丟失時崩潰,這是爲什麼?EditText留空時的錯誤

EditText editText1, editText2; 
double numA, numB, numC; 
TextView answer; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.calc); 

    editText1 = (EditText) findViewById(R.id.editText1); 
    editText2 = (EditText) findViewById(R.id.editText2); 
} 

public void btnClick(View v) 
{ 
    if(editText1.getText().length()==0) 
    { 
     editText1.setError("please input text"); 
    }{ 
     if (editText2.getText().length()==0) 
      { 
       editText2.setError("please input text"); 
      } 

    numA = new Double(editText1.getText().toString()); 
    numB = new Double(editText2.getText().toString()); 

    numC=(numA + numB); answer.setText(Double.toString(numC)); 
    } 
}} 

回答

0

問題是,你正在試圖將""解析成一個數字(特別是double)。您正在檢查空值,但即使設置了錯誤,您仍然試圖解析它。您需要將new Double()語句放置在try-catch塊中,並捕獲嘗試解析無效輸入時發生的異常。這樣,即使用戶輸入隨機字符串也不可解析爲雙精度的文本,也是安全的。

0

你的代碼改成這樣:

if(TextUtils.isEmpty(editText1.getText())) 
{ 
    editText1.setError("please input text"); 
} 
if(TextUtils.isEmpty(editText2.getText())) 
{ 
    editText2.setError("please input text"); 
} 

TextUtils.isEmpty(str)做什麼是返回str == null || str.length() == 0

0

試試這個,

只是替換您的發言these..and它會奏效。

if ((editText1.getText().toString()).equals(null)) 


if ((editText2.getText().toString()).equals(null)) 
0

只管去做

if(editText1.getText().toString().equals(null){//your code here} 
if(editText2.getText().toString().equals(null){//your code here}