2013-02-06 86 views
-1

当我在程序中点击按钮而没有输入数据时,它会同时显示两个错误(我在下面的prog中突出显示)。在这里,我需要一次我的意思是,当它为空它表明适当one.vice反之亦然只得到一个错误..程序执行不正确

b.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     if(v==findViewById(R.id.button1)) { 
     et1 = (EditText) findViewById(R.id.editText1); 
     if(et1.getText()!=null) { 
     try { 
       radius = Double.valueOf(et1.getText().toString()); 
     } 
     catch (Exception e) { 
      Toast.makeText(getApplicationContext(), "Please enter correct value", Toast.LENGTH_SHORT).show(); 
     } 
     } 

     if(radius==0.0) { 
      Toast.makeText(getApplicationContext(), "Value cannot be 0", Toast.LENGTH_SHORT).show(); 
     } 
     try { 
      output = (double) Math.round(Math.PI * radius * radius); 
      String s = Double.toString(output); 
      tv1.setText(s); 
     } 
     catch (Exception e) { 
      Toast.makeText(getApplicationContext(), "Please enter correct value", Toast.LENGTH_SHORT).show(); 
     } 
     } 
    } 
}); 
+0

第二个if取决于第一个是否为假。因此,无论是如果一个“else if”或者将方法留在第一个异常块中。 –

回答

1

不要让事情变得更加复杂,因为他们实际上是。您可以确定没有任何try/catch块输入了正确的值。可能的做法:

b.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      switch (v.getId()) { 

      case R.id.button1: 
       Pattern p = Pattern.compile("([0-9]*)"); 

       if (et1.getText().toString().trim().length() > 0) { 
        Matcher m = p.matcher(et1.getText().toString().trim()); 

        if (m.matches()) { 
         radius = Double.valueOf(et1.getText().toString()); 
         output = (double) Math.round(Math.PI * radius 
           * radius); 
         tv1.setText(Double.toString(output)); 
        } else 
         Toast.makeText(getApplicationContext(), 
           "incorrect value", Toast.LENGTH_SHORT) 
           .show(); 
       } else 
        Toast.makeText(getApplicationContext(), 
          "input is empty", Toast.LENGTH_SHORT).show(); 

       break; 

      default: 
      } 

     } 
    }); 

在上面的代码中,您检查是否有任何文本输入。第二个如果使用java正则表达式检查输入是否是数字。当满足这两个要求时,您可以确保输出正确计算。

顺便说一下,使用开关盒是点击听众的更好方法