我该怎么做才能缩短这些计算操作(Java)

时间:2016-09-11 17:17:49

标签: java performance netbeans

我想弄清楚我的代码在哪里可以更有效率,而不是重复的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);
                }
    }      

2 个答案:

答案 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"