如何缩短这些计算操作(Java)



我正试图找出我在代码中可以更有效的地方,而不是重复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…"

相关内容

  • 没有找到相关文章

最新更新