Я работаю над простым калькулятором в JAVA и пытаюсь поэкспериментировать с графическим интерфейсом. Я столкнулся с некоторыми ошибками, которые до сих пор не устранены с помощью отладчика.
Кнопки на калькуляторе, которые представляют *, - и т. Д., Не работают должным образом, работает только одна кнопка плюс, которая работает правильно.
Кнопка деления никогда не выводит ничего, она выдает ошибку, которая говорит, что она не может быть разделена на ноль. Это самый странный случай, потому что если вход или сохраняемое число равно нулю, это определенно повлияет на положительный ответ, но это не так.
Кнопка умножения выводит ноль в ответе, а кнопка минус складывает два числа вместе вместо уменьшения одного из другого.
Если кто-то видит причину любой из вышеперечисленных проблем, пожалуйста, сообщите мне ..
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();
}
}