【问题标题】:Java Calculator ErrorsJava 计算器错误
【发布时间】:2018-05-10 14:44:34
【问题描述】:

我正在使用 JAVA 开发一个简单的计算器,因为我正在尝试使用 GUI。我遇到了一些调试器仍然无法解决的错误..

计算器上代表 *,- 等的按钮不能正常工作,唯一正常工作的是加号按钮。

除法按钮从不输出任何内容,它输出一个错误,表示它不能被零除。这是最奇怪的,因为如果输入或保存的数字为零,肯定会影响加号答案,但不会。

乘法按钮输出一个零作为其答案,减号按钮将两个数字相加,而不是从另一个减少一个。

如果有人看到上述任何问题的原因,请告诉我..

 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();
}

}

【问题讨论】:

  • 分享完成,以便我找到错误。在这里我没有发现任何错误
  • 好的,我现在正在编辑帖子
  • 不要像Enter num1:那样同时获取num1和num2,然后输入Enter num2:并在此之后进行计算
  • 亲爱的@Swize 请明确说明您需要我们提供的帮助。您是否希望将计算器逻辑作为答案发布?或者除以零是您遇到的错误,需要帮助解决这个问题?
  • 分享完整代码,您将快速获得帮助

标签: java jbutton calculator


【解决方案1】:

根据您在上面的代码中所做的,如果您输入只有一位数字的整数,它将完美地工作。

例如: 添加 5 然后 num1=5 并按 + 按钮然后 kmstrue,然后输入 6 和 num2=6 现在如果您按 result 结果 将是 11 岁。

但是如果你尝试在结果前输入另一个数字,这个输入的数字将被添加到num2,就像num2 = num2 + newAddedDigit,而不是连接到num2

因此,为了获得计算器的真正功能,请尝试连接为num1num2 按下的数字按钮

【讨论】:

  • 非常感谢!很抱歉没有很好地解释它,因为我还是编程新手。
  • 没关系@Swize。很高兴这对您有帮助。但下次尝试更准确地了解问题,这样您会更有效地得到答案。
猜你喜欢
  • 2011-10-31
  • 2018-04-01
  • 2017-01-27
  • 2013-12-31
  • 1970-01-01
  • 2015-09-28
  • 1970-01-01
  • 2014-03-05
相关资源
最近更新 更多