これをどのように機能させますか?関数addintで有効なALが見つからないと言っています。さまざまな関数で int を Arraylist に追加するにはどうすればよいですか?
/**
* Constructor
*/
public Player()
{
ArrayList<int> AL = new ArrayList();
}
public void addint(int C){
AL.add(C);
}
これをどのように機能させますか?関数addintで有効なALが見つからないと言っています。さまざまな関数で int を Arraylist に追加するにはどうすればよいですか?
/**
* Constructor
*/
public Player()
{
ArrayList<int> AL = new ArrayList();
}
public void addint(int C){
AL.add(C);
}
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);
}
}
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);
}
}
より詳しい情報:
最も簡単な方法は次のとおりです。
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から使えます。<Integer>フィールドを指定し、代わりに使用する必要があります<int>:
/**
* Constructor
*/
ArrayList<Integer> AL;
public Player()
{
this.AL = new ArrayList<Integer>();
}
public void addint(int C){
this.AL.add(C);
}
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);
}
}
それを定義するInteger代わりに、Wrapper クラスを使用する必要があります。intArrayList
ArrayList<Integer> AL = new ArrayList<Integer>();
インスタンスArrayList<Integer> AL変数を作成します。現在はローカル変数です。