程序执行不正确

时间:2013-02-06 15:05:48

标签: android android-emulator

当我在没有输入数据的情况下点击我的程序中的按钮时,它同时显示两个错误(我在下面的编号中突出显示)。在这里,我需要一次只得到一个错误,我的意思是当它为空时它已显示适当的一个。服务相反..

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();
        }
        }
    }
});

1 个答案:

答案 0 :(得分: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:
            }

        }
    });

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

BTW,使用switch-case是一种更好的点击侦听器方法