我正试图找出我在代码中可以更有效的地方,而不是重复IF语句。它目前需要我的NB IDE 25秒来运行我的基本计算器应用程序。
我很感激任何帮助,因为我只能找到代码片段,但不是一个实际的方法,我应该首先看看削减。
我的equals函数的当前代码是:
private void jBtn18ActionPerformed(java.awt.event.ActionEvent evt) {
String finalAnswer;
secondnumber = Double.parseDouble(jtxtDisplay.getText());
if (operations == "+")
{
result = firstnumber + secondnumber;
String answer = String.format("%.0f",result);
jtxtDisplay.setText(answer);
}
else if (operations == "-")
{
result = firstnumber - secondnumber;
String answer = String.format("%.0f",result);
jtxtDisplay.setText(answer);
}
else if (operations == "/")
{
result = firstnumber / secondnumber;
String answer = String.format("%.0f",result);
jtxtDisplay.setText(answer);
}
else if (operations == "*")
{
result = firstnumber * secondnumber;
String answer = String.format("%.0f",result);
jtxtDisplay.setText(answer);
}
else if (operations == "%")
{
result = firstnumber % secondnumber;
String answer = String.format("%.0f",result);
jtxtDisplay.setText(answer);
}
}
没有什么可以缩短的。你必须遵守5个"如果"。同样,这样比较字符串也是不正确的。
if (operations.equals("+"))
{
result = firstnumber + secondnumber;
}
else if (operations.equals("-"))
{
result = firstnumber - secondnumber;
}
else if (operations.equals("/"))
{
result = firstnumber / secondnumber;
}
else if (operations.equals("*"))
{
result = firstnumber * secondnumber;
}
else if (operations.equals("%"))
{
result = firstnumber % secondnumber;
}
String answer = String.format("%.0f",result);
jtxtDisplay.setText(answer);
解释:
==
比较具有相同字符的字符串的内存位置,这些位置可能不同。.equals
比较字符串的实际字符,所以应该使用它。
String answer = String.format("%.0f",result);
jtxtDisplay.setText(answer);
在每个if语句中重复出现。
可以去掉末尾重复的2行。当然,你必须使用w =方法来压缩字符串。
private void jBtn18ActionPerformed(java.awt.event.ActionEvent evt) {
String finalAnswer;
secondnumber = Double.parseDouble(jtxtDisplay.getText());
if (operations.equals("+"))
{
result = firstnumber + secondnumber;
}
else if (operations.equals("-"))
{
result = firstnumber - secondnumber;
}
else if (operations.equals("/"))
{
result = firstnumber / secondnumber;
}
else if (operations.equals("*"))
{
result = firstnumber * secondnumber;
}
else if (operations.equals("%"))
{
result = firstnumber % secondnumber;
}
String answer = String.format("%.0f",result);
jtxtDisplay.setText(answer);
}
另一种可能是用case代替"switch…"