这是我的代码
public void onClick(View v)
{
if (v == buttonOne)
{
TextView output = (TextView)findViewById(R.id.output);
output.append("1");
}
else if (v == buttonTwo)
{
TextView output = (TextView)findViewById(R.id.output);
output.append("2");
}
else if (v == buttonThree)
{
TextView output = (TextView)findViewById(R.id.output);
output.append("3");
}
else if (v == buttonFour)
{
TextView output = (TextView)findViewById(R.id.output);
output.append("4");
}
else if (v == buttonFive)
{
TextView output = (TextView)findViewById(R.id.output);
output.append("5");
}
else if (v == buttonSix)
{
TextView output = (TextView)findViewById(R.id.output);
output.append("6");
}
else if (v == buttonSeven)
{
TextView output = (TextView)findViewById(R.id.output);
output.append("7");
}
else if (v == buttonEight)
{
TextView output = (TextView)findViewById(R.id.output);
output.append("8");
}
else if (v == buttonNine)
{
TextView output = (TextView)findViewById(R.id.output);
output.append("9");
}
else if (v == buttonZero)
{
TextView output = (TextView)findViewById(R.id.output);
output.append("0");
}
else if(v == buttonEnter)
{
TextView output = (TextView)findViewById(R.id.output);
temp = Integer.parseInt(output.getText().toString());
compareNumber(temp);
output.setText("");
}
}
我正在尝试使用按钮比较数字。例如,如果我按下buttonOne,它会将1追加到堆栈。单击一个或多个数字后按Enter键时,它完全正常,但是当我离开EditText而没有输入任何数字时按下按钮,应用程序停止。
请帮忙!
答案 0 :(得分:2)
问题出在这一行
temp = Integer.parseInt(output.getText().toString());
当您尝试将parseInt()
用于空字符串时。它会崩溃。看看您的变量输出。
<强>解决方案强>
您可以在使用通过添加此行从EditText
检索到的值进行操作之前始终应用条件
if(editText.getText().length() != 0)
答案 1 :(得分:1)
在将TextView解析为int.
之前,您必须检查TextView是否为空。您可以按如下方式进行检查。
else if(v == buttonEnter)
{
TextView output = (TextView)findViewById(R.id.output);
String txt = output.getText().toString();
if (!temp.matches("")) {
temp = Integer.parseInt(output.getText().toString());
}
另外,为什么要在每个if循环中声明Textview?您可以按照以下方式执行此操作
public void onClick(View v)
{
TextView output = (TextView)findViewById(R.id.output);
if (v == buttonOne)
{
output.append("1");
}
else if (v == buttonTwo)
{
output.append("2");
}
else if (v == buttonThree)
{
output.append("3");
}
else if (v == buttonFour)
{
output.append("4");
}
else if (v == buttonFive)
{
output.append("5");
}
else if (v == buttonSix)
{
output.append("6");
}
else if (v == buttonSeven)
{
output.append("7");
}
else if (v == buttonEight)
{
output.append("8");
}
else if (v == buttonNine)
{
output.append("9");
}
else if (v == buttonZero)
{
output.append("0");
}
else if(v == buttonEnter)
{
temp = Integer.parseInt(output.getText().toString());
compareNumber(temp);
output.setText("");
}
}
答案 2 :(得分:0)
这只是为了让你的代码看起来不错。为textView创建一个整数数组。举个例子
private int[] numericBtn = {R.id.idzero,R.id.one, R.id.two, R.id.three, R.id.four,R.id.five, R.id.six, R.id.seven, R.id.eight, R.id.nine};
private int[] operationBtn = {R.id.buttonAdd,R.id.buttonMinus, R.id.buttonMultiply, R.id.buttonDivide};
为您的数字按钮创建一个onclick侦听器。喜欢这个
public void setNumericOnClickListener() {
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
Button id = (Button) v;
output.append(id.getText());
}
};
for (int id : numericBtn) {
findViewById(id).setOnClickListener(listener);
}
}
然后在OnCreate方法中调用此方法。 operatorButtons也是如此。快乐的编码。