If语句中的异常处理?

时间:2016-01-01 21:20:38

标签: java android exception if-statement

我正在努力创建一个非常简单的应用程序。有产品名称和匹配的产品编号。用户输入一个数字,并显示相应的名称。

editTextField1 =用户类型数

button1 =搜索按钮

editTextField2 =产品名称出现

现在我的代码正常运行,但只有一个问题,当用户没有输入任何内容并点击button1应用程序崩溃时。所以我可能需要某种异常处理程序?我正在努力让我的头围绕它。我知道我是如何编码的,通过声明大量的变量,是啰嗦的哈哈。

public class MainActivity extends AppCompatActivity {

private Button button1;
private EditText editText1;
private EditText editText2;
private int a = 123;
private String b = "TV";
private int c  = 333;
private String d = "Radio";



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    button1 = (Button) findViewById(R.id.button1);
    editText1 = (EditText) findViewById(R.id.editText1);
    editText2 = (EditText) findViewById(R.id.editText2);

    View.OnClickListener myOnClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            double pNumber = Double.parseDouble(editText1.getText().toString());
            if(pNumber == a){
                editText2.setText(b);
            }
           else if (pNumber == c){
                editText2.setText(d);
            }
            else
                editText2.setText("Invalid Product Number");
            }


    };

    button1.setOnClickListener(myOnClickListener);

3 个答案:

答案 0 :(得分:0)

使用此:

View.OnClickListener myOnClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String text = editText1.getText().toString();

        if(!TextUtils.isEmpty(text)) {
            // EditText1 is not empty
            try {
                double pNumber = Double.parseDouble(text);
                if(pNumber == a)
                    editText2.setText(b);
                else if (pNumber == c){
                    editText2.setText(d);
                else
                    editText2.setText("Invalid Product Number");
            }
            catch(NumberFormatException e) { 
                // Invalid input, not a double
                editText2.setText("Invalid double input"); 
            }
        }
        else {
            // EditText1 is empty
            editText2.setText("EditText1 is empty"); 
        }
    }
};

答案 1 :(得分:0)

除了Spartas答案之外,检查有效的双输入也是一个好主意:

try {
    double pNumber = Double.parseDouble(text);
catch(NumberFormatException e){
    //Do ExceptionHandling
}

答案 2 :(得分:0)

基本上有两种方法可以处理这个

1)使用try - catch

try{
 double pNumber = Double.parseDouble(editText1.getText().toString());
  }catch(NumberFormatException e){
    //show a message to user 

  }

2)使用输入卫生

  String number = editText1.getText().toString();
  boolean isNumber = number.matches("^-?\\d+$"));//haven't tried this though
  if(!isNumber) //if not number
    //show a message to user