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>改为声明变量。

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

在 Java 中,您不能像int在泛型中那样使用原语。你必须使用Integerwhich 是一个包装类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. 您需要在定义时使用 Wrapper 类Integer而不是.intArrayList

    ArrayList<Integer> AL = new ArrayList<Integer>();
    
  2. 制作ArrayList<Integer> AL一个实例变量。目前它是一个局部变量。

于 2013-07-19T21:29:29.783 回答