0% found this document useful (0 votes)
14 views3 pages

Calculator

Uploaded by

r48167763
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views3 pages

Calculator

Uploaded by

r48167763
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
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