Java 计算器应用程序:在我点击(签名)按钮后,应用程序关闭

Java 计算器应用程序:在我点击(签名)按钮后,应用程序关闭,java,android,android-studio,calculator,Java,Android,Android Studio,Calculator,我不知道我的代码哪里出错了。每次我按下一个按钮,我的应用程序都会关闭,除非我添加了一个try-and-catch。当我输入两个数字并添加标志时,结果应该会打印出来,但应用程序只是关闭了。这是我的日志和代码。顺便说一句,我是java&android studio新手,请原谅我的错误 public class MainActivity extends AppCompatActivity { Button btnAdd, btnSubtract,btnMultiply, btnDivid

我不知道我的代码哪里出错了。每次我按下一个按钮,我的应用程序都会关闭,除非我添加了一个try-and-catch。当我输入两个数字并添加标志时,结果应该会打印出来,但应用程序只是关闭了。这是我的日志和代码。顺便说一句,我是java&android studio新手,请原谅我的错误

public class MainActivity extends AppCompatActivity  {


    Button btnAdd, btnSubtract,btnMultiply, btnDivide;
    TextView textResults, textSigns;
    EditText firstnumber, secondnumber;




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        firstnumber = (EditText) findViewById(R.id.firstnumber);
        secondnumber =(EditText) findViewById(R.id.secondnumber);
        textResults = (TextView) findViewById(R.id.results);
        textSigns = (TextView) findViewById(R.id.invisible_signs);
        btnAdd = (Button) findViewById(R.id.Add);
        btnDivide = (Button) findViewById(R.id.divide);
        btnMultiply =(Button) findViewById(R.id.Multiply);
        btnSubtract =(Button) findViewById(R.id.Subtract);
        final String number1 = firstnumber.getText().toString();
        final String number2 = secondnumber.getText().toString();


        btnDivide.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {int divide = Integer.parseInt(number1) / Integer.parseInt(number2);
                    textResults.setText(number1 + " / " + number2  );
                    textResults.setVisibility(View.VISIBLE);
                textResults.append("\n" + divide);}
                catch(Exception e){
                    Toast.makeText(getApplicationContext(), "Cannot Divide These Numbers", Toast.LENGTH_SHORT).show();


                }

            }
        });

        btnMultiply.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int multiply = Integer.parseInt(number1) * Integer.parseInt(number2);
                textResults.setText(number1 + " * " + number2  );
                textResults.setVisibility(View.VISIBLE);
                textResults.append("\n" + multiply);
            }
        });

        btnAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int addition = Integer.parseInt(number1) + Integer.parseInt(number2);
                textResults.setText(number1 + " + " + number2  );
                textResults.setVisibility(View.VISIBLE);
                textResults.append("\n" + addition);
            }
        });

        btnSubtract.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int subtract = Integer.parseInt(number1) - Integer.parseInt(number2);
                textResults.setText(number1 + " - " + number2  );
                textResults.setVisibility(View.VISIBLE);
                textResults.append("\n" + subtract);
            }
        });
    }
}
。 日志:


进行计算时不读取输入值,因此字符串将始终为空

变量在赋值时得到它们的值,赋值并不意味着它们与输入绑定,并在输入改变时改变它们的值

删除这些行

final String number1 = firstnumber.getText().toString();
final String number2 = secondnumber.getText().toString();
调整一下这个

int divide = Integer.parseInt(firstnumber.getText()) / Integer.parseInt(secondnumber.getText());

无效的int:???
java.lang.NumberFormatException:Invalid int:
您不能将“”视为一个整数。请注意,
integer.parseInt()
方法会抛出一个
NumberFormatException
(您在这里看到的内容),如果文档中的“
字符串
无法作为整数值传递”-它正常工作了。谢谢大家的帮助
int divide = Integer.parseInt(firstnumber.getText()) / Integer.parseInt(secondnumber.getText());