Java 计算器应用程序:在我点击(签名)按钮后,应用程序关闭
我不知道我的代码哪里出错了。每次我按下一个按钮,我的应用程序都会关闭,除非我添加了一个try-and-catch。当我输入两个数字并添加标志时,结果应该会打印出来,但应用程序只是关闭了。这是我的日志和代码。顺便说一句,我是java&android studio新手,请原谅我的错误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
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());