0

我需要帮助来修复我的代码。我认为这很简单(可能是),但我无法理解。我有一个简单的加法计算器。它工作正常,但如果我将 1 或两个数字文本字段留空,程序就会崩溃。

我有我的 if 语句,但显然我并没有告诉它做正确的事情。

public class MainActivity extends Activity {
Double firstNum, secondNum, answerNum;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final EditText first = (EditText) findViewById(R.id.txtFirst);
    final EditText second = (EditText) findViewById(R.id.txtSecond);


    final TextView answer = (TextView) findViewById(R.id.txtAnswer);



    Button calc = (Button) findViewById(R.id.btnCalc);
    calc.setOnClickListener(new OnClickListener() {



        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            // convert pulled info to double using variable names
            firstNum = Double.parseDouble(first.getText().toString());
            secondNum = Double.parseDouble(second.getText().toString());

            if (first == null || second == null)
            {
                Toast.makeText(MainActivity.this, "Please Enter value", Toast.LENGTH_SHORT).show();
            }
            else {

            // add numbers
            answerNum = (firstNum + secondNum);
            //set format
            DecimalFormat total = new DecimalFormat ("###,###,###.##");
            answer.setText("Answer is " + total.format(answerNum));
            }
        }
    });
}
}
4

2 回答 2

2

由于 line: Double.parseDouble(second.getText().toString()),您有异常,它无法将空字符串解析为双精度,因此您应该添加一些验证代码。

于 2013-07-21T23:02:10.320 回答
0

如果您想验证 edittext 意味着尝试以下代码,它将正常工作。

public class MainActivity extends Activity {
double firstNum = 0;
double secondNum = 0, answerNum;

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

    final TextView answer = (TextView) findViewById(R.id.textView1);

    Button calc = (Button) findViewById(R.id.button1);
    calc.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub


            if (first.getText().toString().equals("")
                    || second.getText().toString().equals("")) {
                Toast.makeText(MainActivity.this, "Please Enter value",
                        Toast.LENGTH_SHORT).show();
            } else {
                firstNum = Double.parseDouble(first.getText().toString());
                secondNum = Double.parseDouble(second.getText().toString());
                answerNum = (firstNum + secondNum);
                DecimalFormat total = new DecimalFormat("###,###,###.##");
                answer.setText("Answer is " + total.format(answerNum));
            }
        }
    });
}
}
于 2013-07-22T07:30:09.313 回答