我最近做了一个计算器,除了按钮相等之外,其他所有功能都工作正常。在输出正确答案的同时,即使按了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);
}
}
答案 0 :(得分:1)
当您按下按钮(我假设它是Swing JButton)时,所有工作都在称为event dispatch thread
的特定执行线程中完成。顾名思义,它不是执行繁重任务(即您当前的工作)的正确线程。使用它时,它无法为其他GUI元素调度事件,因此您不能使用任何其他元素。
因此,您需要将您的业务工作放入额外的线程中,从而处理Swing中的并发性。您可以here来了解它。
答案 1 :(得分:0)
使用while(True)
语句将其包装起来,直到退出为止。