EditText崩溃简单的计算器

时间:2016-01-19 00:06:21

标签: android android-intent android-activity

我正在尝试构建基本的计算器,但是当我在第一个edittext中输入一个数字并点击添加按钮时,它就会崩溃。 我在两个editTexts中添加两个数字都没问题。这没有问题。但问题发生在我只放了一个数字并点击添加。 它抛出 NumberFormatException:Invalid int:“”。 这是我的基本代码。

public class MainActivity extends AppCompatActivity {
 EditText num1;
EditText num2;
Button add,sub,multi,div;
TextView MyResults;
String Number1 ;//;
String Number2 ;//
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    num1 = (EditText)findViewById(R.id.num1);
    num2 = (EditText)findViewById(R.id.num2);
    add = (Button)findViewById(R.id.Add);
    sub = (Button)findViewById(R.id.Sub);
    multi = (Button)findViewById(R.id.Multiple);
    div = (Button)findViewById(R.id.Divide);
    MyResults = (TextView)findViewById(R.id.results);



    add.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Number1 =num1.getText().toString();
            Number2 =num2.getText().toString();
            int mAdd1 = Integer.valueOf(Number1);
            int mAdd2 = Integer.valueOf(Number2);
            int myAdd = mAdd1+mAdd2;
            MyResults.setText(String.valueOf(myAdd));
            Toast.makeText(getApplicationContext(), "Added: "+ myAdd, Toast.LENGTH_LONG).show();

        }
    });




}//end OnCreate.

2 个答案:

答案 0 :(得分:0)

当您离开EditText

int mAdd2 = Integer.valueOf(Number2);

因为空的String不是有效的Integer(因此NumberFormatException)而会崩溃。

你可以把它放在这样的try / catch中:

try {
    Number1 =num1.getText().toString();
    Number2 =num2.getText().toString();
    int mAdd1 = Integer.valueOf(Number1);
    int mAdd2 = Integer.valueOf(Number2);
    MyResults.setText(String.valueOf(myAdd));
    Toast.makeText(getApplicationContext(), "Added: "+ myAdd, Toast.LENGTH_LONG).show();
catch (NumberFormatException e) {
    //Give a toast saying the user did not enter two correct values
}

或者,预先检查该值并检查是否输入了任何内容:

number1 =num1.getText().toString();
number2 =num2.getText().toString();
if (number1.equals("") || number2.equals("")) {
    //Show error or set numbers to a different value
}

但是,要使其正常工作,您必须假设用户没有输入任何有效Integer字母的内容,例如将EditText的输入类型设置为数字。

android:inputType="number"

答案 1 :(得分:0)

您应该对空白编辑文本进行验证检查,在这种情况下不进行计算。

相反,您可以利用EditText的setError(CharSequence)方法,在该方法中您可以向用户显示一条消息,说明输入无效的原因。