相等的按钮后如何继续计算

时间:2018-11-21 10:11:52

标签: java

我最近做了一个计算器,除了按钮相等之外,其他所有功能都工作正常。在输出正确答案的同时,即使按了equals之后,我也想继续使用运算符。我该怎么办?

if(e.getSource() == btnEquals) {     
            num2 = 0;
            char operator2 = 's';
            try {
                display.append("=" + "\n");
                for ( String line : display.getText().split("\\n")) {
                    char operator1 = line.charAt(line.length()-1);
                    num1 = Double.parseDouble(line.substring(0, line.length()-1));
                    if (operator2 == 's') {
                        num2 = num1;
                        operator2 = operator1;
                    } else if (operator2 == '+') {
                        num2 = num2 + num1;
                        operator2 = operator1;
                    } else if (operator2 == '-') {
                        num2 = num2 - num1;
                        operator2 = operator1;
                    } else if (operator2 == '*') {
                        num2 = num2 * num1;
                        operator2 = operator1;
                    } else if (operator2 == '/') {
                        num2 = num2 / num1;
                        operator2 = operator1;     
                    }
                }

            } catch (NumberFormatException a) {
                display.setText("Error: Consecutive Operators " + " (=) " + " or no input" + "\n");
             return;
            }

            display.setText(display.getText() + num2);

        }
    }

2 个答案:

答案 0 :(得分:1)

当您按下按钮(我假设它是Swing JButton)时,所有工作都在称为event dispatch thread的特定执行线程中完成。顾名思义,它不是执行繁重任务(即您当前的工作)的正确线程。使用它时,它无法为其他GUI元素调度事件,因此您不能使用任何其他元素。

因此,您需要将您的业务工作放入额外的线程中,从而处理Swing中的并发性。您可以here来了解它。

答案 1 :(得分:0)

使用while(True)语句将其包装起来,直到退出为止。