Design a Math Calculator using JAVA Allow 2 inputted numbers

Design a Math Calculator using JAVA

Allow 2 inputted numbers. And have a third JTextField for the answer.

The calculator must work, but show an Exception error when the user inputs something non-numerical.

All math must allow for 3 decimal places.

Have JButtons for + - * / Logarithm (base 10) convert from hex to decimal convert from decimal to hex

It must BE a JFrame and only produce ONE CLASS when you compile.

Solution

Pleasf find below the java program to create a simple math calculator:

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

class Calculator extends JFrame {
private final Font BIGGER_FONT = new Font(\"monspaced\",Font.PLAIN, 15);
private JTextField textfield;
private boolean number = true;
private String equalOp = \"=\";
private CalculatorOp op = new CalculatorOp();
  
public Calculator() {
textfield = new JTextField(\"\", 14);
textfield.setHorizontalAlignment(JTextField.RIGHT);
textfield.setFont(BIGGER_FONT);
ActionListener numberListener = new NumberListener();
String buttonOrder = \"1234567890 \";
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(4, 4, 4, 4));
for (int i = 0; i < buttonOrder.length(); i++) {
String key = buttonOrder.substring(i, i+1);
if (key.equals(\" \")) {
buttonPanel.add(new JLabel(\"\"));
} else {
JButton button = new JButton(key);
button.addActionListener(numberListener);
button.setFont(BIGGER_FONT);
buttonPanel.add(button);
}
}
ActionListener operatorListener = new OperatorListener();
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(4, 4, 4, 4));
String[] opOrder = {\"+\", \"-\", \"*\", \"/\",\"=\",\"C\",\"sin\",\"cos\",\"log\"};
for (int i = 0; i < opOrder.length; i++) {
JButton button = new JButton(opOrder[i]);
button.addActionListener(operatorListener);
button.setFont(BIGGER_FONT);
panel.add(button);
}
JPanel pan = new JPanel();
pan.setLayout(new BorderLayout(6, 6));
pan.add(textfield, BorderLayout.NORTH );
pan.add(buttonPanel , BorderLayout.CENTER);
pan.add(panel , BorderLayout.EAST);
this.setContentPane(pan);
this.pack();
this.setTitle(\"Calculator\");
this.setResizable(false);
}
private void action() {
number = true;
textfield.setText(\"\");
equalOp = \"=\";
op.setTotal(\"\");
}
class OperatorListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
String displayText = textfield.getText();
if (e.getActionCommand().equals(\"sin\"))
{
textfield.setText(\"\" + Math.sin(Double.valueOf(displayText).doubleValue()));
  
}else
if (e.getActionCommand().equals(\"cos\"))
{
textfield.setText(\"\" + Math.cos(Double.valueOf(displayText).doubleValue()));
  
}
else
if (e.getActionCommand().equals(\"log\"))
{
textfield.setText(\"\" + Math.log(Double.valueOf(displayText).doubleValue()));
  
}
else if (e.getActionCommand().equals(\"C\"))
{
textfield.setText(\"\");
}

else
{
if (number)
{
  
action();
textfield.setText(\"\");
  
}
else
{
number = true;
if (equalOp.equals(\"=\"))
{
op.setTotal(displayText);
}else
if (equalOp.equals(\"+\"))
{
op.add(displayText);
}
else if (equalOp.equals(\"-\"))
{
op.subtract(displayText);
}
else if (equalOp.equals(\"*\"))
{
op.multiply(displayText);
}
else if (equalOp.equals(\"/\"))
{
op.divide(displayText);
}
  
textfield.setText(\"\" + op.getTotalString());
equalOp = e.getActionCommand();
}
}
}
}
class NumberListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
String digit = event.getActionCommand();
if (number) {
textfield.setText(digit);
number = false;
} else {
textfield.setText(textfield.getText() + digit);
}
}
}
public class CalculatorOp {
private int total;
public CalculatorOp() {
total = 0;
}
public String getTotalString() {
return \"\"+total;
}
public void setTotal(String n) {
total = convertToNumber(n);
}
public void add(String n) {
total += convertToNumber(n);
}
public void subtract(String n) {
total -= convertToNumber(n);
}
public void multiply(String n) {
total *= convertToNumber(n);
}
public void divide(String n) {
total /= convertToNumber(n);
}
private int convertToNumber(String n) {
return Integer.parseInt(n);
}
}
}
class SwingCalculator {
public static void main(String[] args) {
JFrame frame = new Calculator();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}

Design a Math Calculator using JAVA Allow 2 inputted numbers. And have a third JTextField for the answer. The calculator must work, but show an Exception error
Design a Math Calculator using JAVA Allow 2 inputted numbers. And have a third JTextField for the answer. The calculator must work, but show an Exception error
Design a Math Calculator using JAVA Allow 2 inputted numbers. And have a third JTextField for the answer. The calculator must work, but show an Exception error

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site