我正在尝试构建基本的计算器,但是当我在第一个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.
答案 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)方法,在该方法中您可以向用户显示一条消息,说明输入无效的原因。