对于练习,我正在尝试创建一个功能齐全的计算器。我复制了下面代码的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");
}
}
}
答案 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);
}
}
}
}