- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCalculator.java
More file actions
Latest commit
126 lines (108 loc) · 5.27 KB
/
Copy pathCalculator.java
File metadata and controls
126 lines (108 loc) · 5.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
importjava.awt.BorderLayout;
importjava.awt.GridBagConstraints;
importjava.awt.GridBagLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
importjavax.swing.JTextField;
publicclassCalculatorimplementsActionListener {
privatestaticJTextFieldinputBox;
Calculator(){}
publicstaticvoidmain(String[] args) {
createWindow();
}
privatestaticvoidcreateWindow() {
JFrameframe = newJFrame("Calculator");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
createUI(frame);
frame.setSize(200, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
privatestaticvoidcreateUI(JFrameframe) {
JPanelpanel = newJPanel();
Calculatorcalculator = newCalculator();
GridBagLayoutlayout = newGridBagLayout();
GridBagConstraintsgbc = newGridBagConstraints();
panel.setLayout(layout);
inputBox = newJTextField(10);
inputBox.setEditable(false);
JButtonbutton0 = newJButton("0");JButtonbutton1 = newJButton("1");
JButtonbutton2 = newJButton("2");JButtonbutton3 = newJButton("3");
JButtonbutton4 = newJButton("4");JButtonbutton5 = newJButton("5");
JButtonbutton6 = newJButton("6");JButtonbutton7 = newJButton("7");
JButtonbutton8 = newJButton("8");JButtonbutton9 = newJButton("9");
JButtonbuttonPlus = newJButton("+");JButtonbuttonMinus = newJButton("-");
JButtonbuttonDivide = newJButton("/");JButtonbuttonMultiply = newJButton("x");
JButtonbuttonClear = newJButton("C");JButtonbuttonDot = newJButton(".");
JButtonbuttonEquals = newJButton("=");
button1.addActionListener(calculator);button2.addActionListener(calculator);
button3.addActionListener(calculator);button4.addActionListener(calculator);
button5.addActionListener(calculator);button6.addActionListener(calculator);
button7.addActionListener(calculator);button8.addActionListener(calculator);
button9.addActionListener(calculator);button0.addActionListener(calculator);
buttonPlus.addActionListener(calculator);buttonMinus.addActionListener(calculator);
buttonDivide.addActionListener(calculator);buttonMultiply.addActionListener(calculator);
buttonClear.addActionListener(calculator);buttonDot.addActionListener(calculator);
buttonEquals.addActionListener(calculator);
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridx = 0; gbc.gridy = 0; panel.add(button1, gbc);
gbc.gridx = 1; gbc.gridy = 0; panel.add(button2, gbc);
gbc.gridx = 2; gbc.gridy = 0; panel.add(button3, gbc);
gbc.gridx = 3; gbc.gridy = 0; panel.add(buttonPlus, gbc);
gbc.gridx = 0; gbc.gridy = 1; panel.add(button4, gbc);
gbc.gridx = 1; gbc.gridy = 1; panel.add(button5, gbc);
gbc.gridx = 2; gbc.gridy = 1; panel.add(button6, gbc);
gbc.gridx = 3; gbc.gridy = 1; panel.add(buttonMinus, gbc);
gbc.gridx = 0; gbc.gridy = 2; panel.add(button7, gbc);
gbc.gridx = 1; gbc.gridy = 2; panel.add(button8, gbc);
gbc.gridx = 2; gbc.gridy = 2; panel.add(button9, gbc);
gbc.gridx = 3; gbc.gridy = 2; panel.add(buttonDivide, gbc);
gbc.gridx = 0; gbc.gridy = 3; panel.add(buttonDot, gbc);
gbc.gridx = 1; gbc.gridy = 3; panel.add(button0, gbc);
gbc.gridx = 2; gbc.gridy = 3; panel.add(buttonClear, gbc);
gbc.gridx = 3; gbc.gridy = 3; panel.add(buttonMultiply, gbc);
gbc.gridwidth = 3;
gbc.gridx = 0; gbc.gridy = 4; panel.add(inputBox, gbc);
gbc.gridx = 3; gbc.gridy = 4; panel.add(buttonEquals, gbc);
frame.getContentPane().add(panel, BorderLayout.CENTER);
}
publicvoidactionPerformed(ActionEvente) {
Stringcommand = e.getActionCommand();
if (command.charAt(0) == 'C') {
inputBox.setText("");
}elseif (command.charAt(0) == '=') {
inputBox.setText(evaluate(inputBox.getText()));
}else {
inputBox.setText(inputBox.getText() + command);
}
}
publicstaticStringevaluate(Stringexpression) {
char[] arr = expression.toCharArray();
Stringoperand1 = "";Stringoperand2 = "";Stringoperator = "";
doubleresult = 0;
for (inti = 0; i < arr.length; i++) {
if (arr[i] >= '0' && arr[i] <= '9' || arr[i] == '.') {
if(operator.isEmpty()){
operand1 += arr[i];
}else{
operand2 += arr[i];
}
}
if(arr[i] == '+' || arr[i] == '-' || arr[i] == '/' || arr[i] == '*') {
operator += arr[i];
}
}
if (operator.equals("+"))
result = (Double.parseDouble(operand1) + Double.parseDouble(operand2));
elseif (operator.equals("-"))
result = (Double.parseDouble(operand1) - Double.parseDouble(operand2));
elseif (operator.equals("/"))
result = (Double.parseDouble(operand1) / Double.parseDouble(operand2));
else
result = (Double.parseDouble(operand1) * Double.parseDouble(operand2));
returnoperand1 + operator + operand2 + "=" +result;
}
}