我正在尝试使用java构建一个简单的计算器!我的代码中的错误是什么?

时间:2015-03-01 09:35:28

标签: java

我是java的新手,想先建立一个简单的计算器,但我不知道为什么我的代码不起作用!每按一次按钮,文本字段都不会显示结果。 请大家帮帮我吧!

这是我的 代码

       package com.example.calculator;

      import java.awt.Color;
      import java.awt.FlowLayout;
      import java.awt.GridLayout;
      import java.awt.event.ActionEvent;
      import java.awt.event.ActionListener;

      import javax.swing.*;
      public class Gui implements ActionListener {
        double resu = 0;
        JTextField tf;
        JButton plusb,minusb,mulb,divb,resb;
        Gui(){
          JFrame jfrm = new JFrame("Calculator");
          jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          jfrm.setVisible(true);
          jfrm.setLayout(new FlowLayout());
          jfrm.setResizable(false);
          tf = new JTextField(18);
          plusb = new JButton("+");
          minusb = new JButton("-");
          mulb = new JButton("*");
          divb = new JButton("/");
          resb = new JButton("=");
          tf.addActionListener(this);

          plusb.addActionListener(this);
          minusb.addActionListener(this);
          mulb.addActionListener(this);
          divb.addActionListener(this);
          resb.addActionListener(this);

          jfrm.add(tf);
          jfrm.add(resb);
          jfrm.add(plusb);
          jfrm.add(minusb);
          jfrm.add(mulb);
          jfrm.add(divb);
          jfrm.setSize(275, 150);


}
public void actionPerformed(ActionEvent ae){


    switch((ae.getSource()).toString()){
    case "+" : resu = resu + Integer.parseInt(tf.getText());
                        tf.setText("");
                        break;
    case "-" : resu = resu - Integer.parseInt(tf.getText());
    tf.setText("");
    break;
    case "*" : resu = resu * Integer.parseInt(tf.getText());
    tf.setText("");
    break;
    case "/" : resu = resu / Integer.parseInt(tf.getText());
    tf.setText("");break;

    case "=" : tf.setText(String.valueOf(resu));
                resu=0;
    break;

    default : tf.setText("");
    break;
    }
}
public static void main(String[] args){
        SwingUtilities.invokeLater(new Runnable(){
            public void run(){
                    new Gui();
            }
        });
}

}

3 个答案:

答案 0 :(得分:0)

尝试类似:

 int resu = 0;
 switch (..) {
     case "+":
          resu = resu + Integer.parseInt(tf.getText());
          break;
     ...
 }
 tf.setText("Result is " + resu);

答案 1 :(得分:0)

问题是你不能以这种方式取得按钮的标签,试试这个:

Object o = ae.getSource();
    JButton b = null;
    String s="";
    if(o instanceof JButton)
        b = (JButton)o;
    if(b != null)
        s = b.getText();

现在你以正确的方式接纳运营商。 祝你好运惠特java

答案 2 :(得分:0)

您无法在交换机中获取来源。这将返回JButton。 尝试替换它:

switch((ae.getSource()).toString())

要:

switch(ae.getActionCommand())