Java 当我尝试比较整数时,应用程序崩溃
这是我的密码Java 当我尝试比较整数时,应用程序崩溃,java,android,Java,Android,这是我的密码 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
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而不输入任何数字并按buttonEnter键时,应用程序停止
请帮忙 问题出在这条线上
temp = Integer.parseInt(output.getText().toString());
if(editText.getText().length() != 0)
尝试对空字符串使用parseInt()
时。它会崩溃的。查看变量的输出
解决方案
在使用通过添加此行从EditText
检索的值执行操作之前,始终可以应用条件
temp = Integer.parseInt(output.getText().toString());
if(editText.getText().length() != 0)
您必须先检查TextView是否为空,然后再将其解析为
int。
您可以按如下方式进行检查
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("");
}
}
这只是为了让你的代码看起来好看。为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方法中调用此方法。运算符按钮也是如此。愉快的编码。请阅读以下内容:然后回来发布堆栈跟踪,还有:谢谢!我很感激。@Eric这是我的荣幸。非常感谢,这真的很有帮助