我想弄清楚我的代码在哪里可以更有效率,而不是重复的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);
}
}
答案 0 :(得分:0)
你可以缩短很多。你必须保留5个ifs。此外,比较像这样的字符串是不正确的。
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语句都会重复。它应该被拉出来。
答案 1 :(得分:0)
你可以在最后重复2行。当然,你必须使用等于Compressor字符串的方法。
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 ... case"