I am working on a simple calculator in JAVA as i'm trying to experiment with a GUI. I have run into some errors that still aren't resolved with the debugger..
The buttons on the calculator that represent *,- ans so forth aren't working properly, the only one working properly is the plus button which works properly.
The division button never outputs anything, it outputs an error that says that it cant be divided by zero. This is the strangest one because if the input or the number being saved is zero it would definitely effect the plus answer but it does not.
The multiply button outputs a zero as its answer ans the minus button adds the two numbers together instead of reducing one from the other..
If anyone has is seeing the reason of any of the above problems please tell me..
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//Version 1.0
public class App {
private JLabel txt;
private JPanel main;
private JButton one;
private JButton three;
private JButton nine;
private JButton seven;
private JButton eight;
private JButton two;
private JButton four;
private JButton six;
private JButton clear;
private JButton min;
private JButton div;
private JButton times;
private JButton zero;
private JButton five;
private JButton button1;
private JButton plus;
//Variables are declared
int num1;
int num2;
int ans;
boolean kms = false;
int input;
/* boolean multiplication = false;
boolean division = false;
boolean subtract = false;
boolean addition = false;*/
public App() {
txt.setText("0");
times.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("*");
input = 1;
kms = true;
}
});
div.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("/");
kms = true;
input = 2;
}
});
min.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("-");
kms = true;
input = 3;
}
});
plus.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("+");
kms = true;
input = 4;
}
});
clear.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ans = 0;
num1 = 0;
num2 = 0;
txt.setText("");
}
});
if(kms == true){
//Second number being inputted
num1 = Integer.parseInt(txt.getText());
txt.setText("");
one.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText(txt + "1");
num2 = num2 + 1;
}
});
two.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("2");
num2 = num2 + 2;
}
});
three.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("3");
num2 = num2 + 3;
}
});
four.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("4");
num2 = num2 + 4;
}
});
five.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("5");
num2 = num2 + 5;
}
});
six.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("6");
num2 = num2 + 6;
}
});
seven.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("7");
num2 = num2 + 7;
}
});
eight.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("8");
num2 = num2 + 8;
}
});
nine.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("9");
num2 = num2 + 9;
}
});
zero.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("0");
num2 = num2 + 0;
}
});
num2 = Integer.parseInt(txt.getText());
}else if(kms == false){
//First number being inputted
one.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("1");
num1 = num1 + 1;
}
});
two.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("2");
num1 = num1 + 2;
}
});
three.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("3");
num1 = num1 + 3;
}
});
four.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("4");
num1 = num1 + 4;
}
});
five.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("5");
num1 = num1 + 5;
}
});
six.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("6");
num1 = num1 + 6;
}
});
seven.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("7");
num1 = num1 + 7;
}
});
eight.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("8");
num1 = num1 + 8;
}
});
nine.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("9");
num1 = num1 + 9;
}
});
zero.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("0");
num1 = num1 + 0;
}
});
num2 = Integer.parseInt(txt.getText());
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
switch(input){
case 1:
ans = num1 * num2;
txt.setText("Answer is " + ans);
break;
case 2:
ans = num1 / num2;
txt.setText("Answer is " + ans);
break;
case 3:
ans = num1 - num2;
txt.setText("Answer is " + ans);
break;
case 4:
ans = num1 + num2;
txt.setText("Answer is " + ans);
break;
}
}
});
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("Calculator");
frame.setBackground(Color.white);
frame.setVisible(true);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(new App().main);
frame.pack();
}
}
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…