Я работаю над простым калькулятором с Java, и я столкнулся с некоторыми ошибками.
В моем коде я написал так, что при нажатии кнопки умножения она умножает первые два введенных числа, но при нажатии кнопки ничего не происходит.
Также по какой-то причине при нажатии кнопки вычитания добавляется второе введенное число.
Почему-то отладчик тоже не помогает.
Кто-нибудь видит что-то, чего я не вижу?
int num1;
int num2;
int ans;
boolean kms = false;
boolean multiplication = false;
boolean division = false;
boolean subtract = false;
boolean addition = false;
public App() {
times.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("X");
kms = true;
multiplication = true;
}
});
div.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("/");
kms = true;
division = true;
}
});
min.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("-");
kms = true;
subtract = true;
}
});
plus.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txt.setText("+");
kms = true;
addition = true;
}
});
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("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;
}
});
}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;
}
});
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (multiplication == true){
ans = num1 * num2;
txt.setText("Your answer is " + ans);
ans = 0;
num1 = 0;
num2 = 0;
}else if (division == true){
ans = num1 / num2;
txt.setText("Your answer is " + ans);
ans = 0;
num1 = 0;
num2 = 0;
}else if (subtract == true){
ans = num1 - num2;
txt.setText("Your answer is " + ans);
ans = 0;
num1 = 0;
num2 = 0;
}else if (addition == true){
ans = num1 + num2;
txt.setText("Your answer is " + ans);
ans = 0;
num1 = 0;
num2 = 0;
}
}
});
}
}
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();
}
}
Думаешь, я не пробовал?
@Swize, похоже, вы дважды задавали один и тот же вопрос. Я обращусь к проблеме ниже, чтобы помочь другим, кто будет ссылаться на этот пост в будущем.




В соответствии с тем, что вы сделали в приведенном выше коде, если вы вводите целые числа только с одной цифрой, это будет работать идеально.
Пример: добавьте 5, затем num1=5 и нажмите кнопку +, тогда kms будет true, затем введите 6 и num2=6 сейчас, если вы нажмете result, результат будет 11.
Но если вы попытаетесь ввести другую цифру перед результатом, эта введенная цифра будет добавлена к num2 как num2 = num2 + newAddedDigit вместо сцепление в num2
поэтому, чтобы получить реальную функциональность калькулятора, попробуйте соединять на цифровых кнопках, нажатых для num1 и num2
та же проблема была решена также здесь. Надеюсь, это как-то поможет.
ура, счастливого кодирования
Сейчас хорошее время, чтобы научиться пользоваться отладчиком. Действительно