每当按下按钮时,该程序应该将按钮值“ab”保存到ArrayList,但if命令似乎永远不会工作,我尝试删除它并查看它是否有效,它确实并且更新了ArrayList有了新的价值。因此,如果我在J Windows中出现按钮时没有按下按钮,则没有任何反应。
这个程序稍后会将数组保存到一个文件中,所以如果if存在并且我点击了我想要的次数,基本上什么也没有保存,但是如果这个中的if循环去了那么它可以工作
Unit Tests
所以如果这样做了,那么世界将打印出来,aList将在零索引中填充ab:
public void actionPerformed(ActionEvent a)
{
ArrayList<String> aList = new ArrayList<String>();
if (a.getActionCommand() == "ab")
aList.add("ab");
}
答案 0 :(得分:0)
首先,aList是局部变量,它将在方法的退出处被删除。
其次:
a.getActionCommand() == "ab"
您必须使用String
方法比较equals
个对象:
a.getActionCommand().equals("ab")
或
"ab".equals(a.getActionCommand()) //hack for prevention null reference after a.getActionCommand()
在您的示例中有参考比较,但使用equals
您将比较对象,而不是引用。
答案 1 :(得分:0)
您的列表仅存在于方法的范围内。为了在&#34;外部&#34;你应该将它用作实例变量。
例如:
public class A implements ActionListener {
private final List<String> aList;
public A() {
aList = new ArrayList<String>();
}
...
public void actionPerformed(ActionEvent a)
{
if (a.getActionCommand().equals("ab")) {
aList.add("ab");
}
}
}