0

これをどのように機能させますか?関数addintで有効なALが見つからないと言っています。さまざまな関数で int を Arraylist に追加するにはどうすればよいですか?

/**
 * Constructor
 */
public Player()
{
    ArrayList<int> AL = new ArrayList();
}

public void addint(int C){
    AL.add(C);
}
4

6 に答える 6

7

ALコンストラクター内で変数 (ローカル変数) を宣言しましたが、addIntメソッドのスコープ外です。

ALコンストラクターの外側で宣言しますが、クラス内で宣言します。また、ジェネリック型パラメーターIntegerのプリミティブ型ではなく、 を使用します。int(プリミティブ型は、ジェネリック型パラメーターとして使用できません。)

public class Player
{
    // Declare it here.
    private ArrayList<Integer> AL;

    public Player()
    {
        // Initialize it here.
        AL = new ArrayList<Integer>();
    }
    // Now you can access `AL` in your methods.
    public void addint(int C){
        AL.add(C);
    }
}
于 2013-07-19T21:30:17.970 に答える
4

ArrayList<Integer> AL(ではなく、ジェネリックでプリミティブ型を使用することはできません) をクラスのフィールドとして定義ArrayList<int>する必要があります。現在、クラス コンストラクターでパラメーターとして定義しています。また、クラスの実装ではなく、常にインターフェースに対してプログラムすることを忘れないでList<Integer>ください。代わりに、変数を as として宣言してください。

public class Player {
    private List<Integer> AL;
    public Player() {
        AL = new ArrayList<Integer>();
    }
    public void addint(int C){
        AL.add(C);
    }
}

より詳しい情報:

于 2013-07-19T21:31:02.590 に答える
3

最も簡単な方法は次のとおりです。

public class Player {
    private final List<Integer> al = new ArrayList<Integer>();

    public void addint(int c){
        al.add(c);
    }
}
  • 変数は到達可能でなければなりません。
  • この場合、コンストラクターは必要ありませんが、必要に応じてコンストラクターを使用できます。
  • List後で実装を簡単に変更できるようにするため、通常はインターフェイスを参照する傾向があります(Joshua Bloch の本を確認してください)。
  • プリミティブ型をジェネリックとして使用することはできませんが、オートボクシングのおかげでリストにプリミティブを追加できます。
  • new ArrayList<>();Java7から使えます。
  • Java 変数の命名規則に従う必要があります。大文字は通常、定数を意味します。
于 2013-07-19T21:33:14.917 に答える
2

<Integer>フィールドを指定し、代わりに使用する必要があります<int>:

/**
 * Constructor
 */
ArrayList<Integer> AL;
public Player()
{
    this.AL = new ArrayList<Integer>();
}

public void addint(int C){
    this.AL.add(C);
}
于 2013-07-19T21:31:44.107 に答える
1

intJavaでは、ジェネリックのようにプリミティブを使用できません。Integerのラッパークラスであるを使用する必要がありますint

ArrayList<Integer> AL = new ArrayList<Integer>();  

またAL、コンストラクター内で宣言せずに正しく機能させたい場合は、メンバー変数にする必要があるようです。これがあなたが望むものだと思います:

public class Player {
    private List<Integer> AL;
    public Player() {
        AL = new ArrayList<Integer>();
    }
    public void addint(int C){
        AL.add(C);
    }
}
于 2013-07-19T21:31:16.763 に答える
0
  1. それを定義するInteger代わりに、Wrapper クラスを使用する必要があります。intArrayList

    ArrayList<Integer> AL = new ArrayList<Integer>();
    
  2. インスタンスArrayList<Integer> AL変数を作成します。現在はローカル変数です。

于 2013-07-19T21:29:29.783 に答える