|
|
|
@ -65,11 +65,15 @@ public class CalculatorGUI extends JFrame {
|
|
|
|
|
setVisible(true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//将给定的条目加入到历史记录中
|
|
|
|
|
private void appendToHistory(String entry) {
|
|
|
|
|
history.add(entry);
|
|
|
|
|
displayHistory();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 递归下降解析的方法
|
|
|
|
|
// 从表达式的最底层开始,逐步向上解析表达式的不同部分
|
|
|
|
|
// 直到整个表达式都被解析完,计算,最终得到表达式的结果。
|
|
|
|
|
private double eval(String expression) {
|
|
|
|
|
return new Object() {
|
|
|
|
|
int pos = -1, ch;
|
|
|
|
@ -133,6 +137,7 @@ public class CalculatorGUI extends JFrame {
|
|
|
|
|
}.parse();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//将每个条目以换行符分隔的形式显示在界面上的一个历史记录·文本区域中。
|
|
|
|
|
private void displayHistory() {
|
|
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
|
for (String entry : history) {
|
|
|
|
@ -141,6 +146,7 @@ public class CalculatorGUI extends JFrame {
|
|
|
|
|
historyArea.setText(sb.toString());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//特殊符号检测
|
|
|
|
|
private class ButtonListener implements ActionListener {
|
|
|
|
|
@Override
|
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
@ -191,6 +197,7 @@ public class CalculatorGUI extends JFrame {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//特殊符号计算
|
|
|
|
|
private double calculateFunction(String expression, String function) {
|
|
|
|
|
// 根据不同的函数类型计算结果
|
|
|
|
|
double value = Double.parseDouble(expression);
|
|
|
|
@ -208,6 +215,7 @@ public class CalculatorGUI extends JFrame {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//历史记录保存
|
|
|
|
|
private class SaveListener implements ActionListener {
|
|
|
|
|
@Override
|
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
@ -228,6 +236,7 @@ public class CalculatorGUI extends JFrame {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//复制
|
|
|
|
|
private class CopyListener implements ActionListener {
|
|
|
|
|
@Override
|
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
@ -238,6 +247,7 @@ public class CalculatorGUI extends JFrame {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//清除
|
|
|
|
|
private class ClearListener implements ActionListener {
|
|
|
|
|
@Override
|
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
|