diff --git a/Calculator.java b/Calculator.java index fc71457..dae743c 100644 --- a/Calculator.java +++ b/Calculator.java @@ -42,8 +42,41 @@ public class Calculator extends JFrame implements ActionListener { setLocationRelativeTo(null); } - @Override public void actionPerformed(ActionEvent e) { + String command = e.getActionCommand(); + if (command.charAt(0) == 'C') { + input.setLength(0); + display.setText(""); + } else if (command.equals("<-")) { // Delete the last character + if (input.length() > 0) { + input.setLength(input.length() - 1); + display.setText(input.toString()); + } + } else if (command.charAt(0) == '=') { + try { + double result = evaluate(input.toString()); + display.setText(String.valueOf(result)); + input.setLength(0); + } catch (ScriptException ex) { + display.setText("Error"); + input.setLength(0); + } + } else { + input.append(command); + display.setText(input.toString()); + } + } + + private double evaluate(String expression) throws ScriptException { + ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript"); + return ((Number) engine.eval(expression)).doubleValue(); + } + + public static void main(String[] args) { + SwingUtilities.invokeLater(() -> { + Calculator calculator = new Calculator(); + calculator.setVisible(true); + }); } }