0

このプログラムは、ボタンが押されるたびにボタン値「ab」をArrayListに保存することになっていますが、ifコマンドが機能しないようです。削除して機能するかどうかを確認してみました。機能し、ArrayListは新しい価値。そのため、J ウィンドウに表示されたときにボタンを押しても押さなくても、何も起こりません。

このプログラムは後で配列をファイルに保存するため、if が存在し、必要な回数クリックした場合、基本的には何も保存されませんが、この if ループが実行されると機能します

 public void actionPerformed(ActionEvent a) 
    {
        ArrayList<String> aList = new ArrayList<String>();
            if (a.getActionCommand() == "ab")
                aList.add("ab");
    }

したがって、これが行われると、ワールドが出力され、aList のゼロ インデックスに ab が入力されます。

public void actionPerformed(ActionEvent a) 
{
         ArrayList<String> aList = new ArrayList<String>();
            aList.add("ab");
}
4

2 に答える 2

0

リストはメソッドのスコープ内にのみ存在します。「外部」から操作するには、インスタンス変数として使用する必要があります。

例えば:

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");
        }
    }
}
于 2015-12-14T13:52:27.227 に答える
0

まず、aList はローカル変数であり、メソッドの終了時に削除されます。

第二に:

a.getActionCommand() == "ab"

メソッドStringを使用してオブジェクトを比較する必要があります。equals

a.getActionCommand().equals("ab")

また

"ab".equals(a.getActionCommand()) //hack for prevention null reference after a.getActionCommand()

あなたの例には参照比較がありますが、equals参照ではなく比較オブジェクトになります。

于 2015-12-14T13:51:43.140 に答える