计算器程序获取用户输入

时间:2012-06-01 13:39:41

标签: java swing

对于练习,我正在尝试创建一个功能齐全的计算器。我复制了下面代码的ActionListener类。我觉得我的这个方法用于获取用户输入,将其存储为整数/双倍不能很好地工作,因为它太基本并且在所有情况下都不起作用。我想知道是否有人可以帮我找出构建我的代码的方法,获得两个数字和符号的用户输入,并基本上创建一个完整的功能GUI计算器。我的问题是从我的JButton获取用户输入,存储为像计算器一样的数字(按1两次== 11)并使用它进行后续计算。

我很欣赏这方面的任何建议。

private class TheHandler implements ActionListener{
            public void actionPerformed(ActionEvent event){
                while(equals!=event.getSource())
                    if(one==event.getSource()){
                       result.setText("1");
                       num1=1;
                    }
                    else if(two==event.getSource()){
                       result.setText("2");

                    }
                    else if(three==event.getSource()){
                       result.setText("3");
                    }
                    else if(four==event.getSource()){
                       result.setText("4");
                    }
                    else if(five==event.getSource()){
                       result.setText("5");
                    }
                    else if(six==event.getSource()){
                       result.setText("6");
                    }
                    else if(seven==event.getSource()){
                       result.setText("7");
                    }
                    else if(eight==event.getSource()){
                       result.setText("8");
                    }
                    else if(nine==event.getSource()){
                        result.setText("9");
                    }
                    else if(zero==event.getSource()){
                        result.setText("0");
                    }
                }
            }

3 个答案:

答案 0 :(得分:3)

您应该完全删除

我建议使用像

这样的数字变量
long num = 0;
int digit;

每个事件都应该设置数字

 ...
 else if(nine==event.getSource()){
     digit = 9;
 } else if(zero==event.getSource()){
     digit = 0;
 }
...
num = num * 10 + digit;
...
result.setText(Long.toString(num));

答案 1 :(得分:2)

类成员变量如何存储显示的当前状态并将其用于设置文本?

private class TheHandler implements ActionListener{
    String display = "";
    public void actionPerformed(ActionEvent event){
        while(equals!=event.getSource()){
            if(one==event.getSource()){
                display=display+"1";

            }
            ..... 
        }
        result.setText(display);
    }
}

答案 2 :(得分:1)

您可以更清晰地将每个按钮与如下数字相关联:

private class TheHandler implements ActionListener{
  private Map<Object, String> numbers = new HashMap<Object, String>();
  {
    numbers.put(zero, "0");
    numbers.put(one, "1");
    ...
  }
  public void actionPerformed(ActionEvent event){
    Object source = event.getSource();
    while(equals != source){
      String number = numbers.get(source);
      if (number != null){
        result.setText(number);
      }
    }
  }
}