0% found this document useful (0 votes)
3 views

Calculator

Uploaded by

r48167763
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

Calculator

Uploaded by

r48167763
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

import java.awt.event.

*;
import javax.swing.*;
import java.awt.*;

class Calculator extends JFrame implements ActionListener {


private JTextField textField;
private String s0, s1, s2;

Calculator() {
s0 = s1 = s2 = "";

// Frame setup
setTitle("Calculator");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 400);
setLayout(new BorderLayout());

// Text field setup


textField = new JTextField(16);
textField.setEditable(false);
add(textField, BorderLayout.NORTH);

// Create buttons
JButton b0 = new JButton("0"), b1 = new JButton("1"), b2 = new
JButton("2"),
b3 = new JButton("3"), b4 = new JButton("4"), b5 = new
JButton("5"),
b6 = new JButton("6"), b7 = new JButton("7"), b8 = new
JButton("8"),
b9 = new JButton("9"), ba = new JButton("+"), bs = new
JButton("-"),
bd = new JButton("/"), bm = new JButton("*"), beq = new
JButton("C"),
be = new JButton("."), beq1 = new JButton("=");

// Add action listeners to buttons


JButton[] buttons = {b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, ba, bs, bd,
bm, beq, be, beq1};
for (JButton button : buttons) {
button.addActionListener(this);
}

// Panel setup
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(5,4)); // Adjust grid layout for buttons

// Add buttons to panel


panel.add(b1); panel.add(b2); panel.add(b3); panel.add(ba);
panel.add(b4); panel.add(b5); panel.add(b6); panel.add(bs);
panel.add(b7); panel.add(b8); panel.add(b9); panel.add(bm);
panel.add(be); panel.add(b0); panel.add(beq); panel.add(bd);
panel.add(beq1);

add(panel, BorderLayout.CENTER); // Add panel to frame

setVisible(true); // Make the frame visible


}

public static void main(String args[]) {


SwingUtilities.invokeLater(() -> {
new Calculator(); // Directly create a new Calculator object
});
}

@Override
public void actionPerformed(ActionEvent e) {
String s = e.getActionCommand();
double result = 0; // Declare result at the top

// If a number or decimal point is clicked


if ((s.charAt(0) >= '0' && s.charAt(0) <= '9') || s.charAt(0) == '.') {
if (!s1.equals("")) {
s2 = s2 + s;
} else {
s0 = s0 + s;
}
textField.setText(s0 + s1 + s2);
}
// Clear operation
else if (s.charAt(0) == 'C') {
s0 = s1 = s2 = "";
textField.setText(s0 + s1 + s2);
}
// Calculate result on "="
else if (s.charAt(0) == '=') {
if (s1.equals("+")) {
result = (Double.parseDouble(s0) + Double.parseDouble(s2));
} else if (s1.equals("-")) {
result = (Double.parseDouble(s0) - Double.parseDouble(s2));
} else if (s1.equals("/")) {
result = (Double.parseDouble(s0) / Double.parseDouble(s2));
} else if (s1.equals("*")) {
result = (Double.parseDouble(s0) * Double.parseDouble(s2));
}
textField.setText(s0 + s1 + s2 + "=" + result);
s0 = Double.toString(result);
s1 = s2 = "";
}
// Operation buttons (+, -, *, /)
else {
if (s1.equals("") || s2.equals("")) {
s1 = s;
} else {
if (s1.equals("+")) {
result = (Double.parseDouble(s0) + Double.parseDouble(s2));
} else if (s1.equals("-")) {
result = (Double.parseDouble(s0) - Double.parseDouble(s2));
} else if (s1.equals("/")) {
result = (Double.parseDouble(s0) / Double.parseDouble(s2));
} else if (s1.equals("*")) {
result = (Double.parseDouble(s0) * Double.parseDouble(s2));
}
s0 = Double.toString(result);
s1 = s;
s2 = "";
}
textField.setText(s0 + s1 + s2);
}
}
}

You might also like