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这是我的荣幸。非常感谢,这真的很有帮助