你是如何完成这项工作的?它说在函数 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>
改为声明变量。
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);
}
在 Java 中,您不能像int
在泛型中那样使用原语。你必须使用Integer
which 是一个包装类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);
}
}
您需要在定义时使用 Wrapper 类Integer
而不是.int
ArrayList
ArrayList<Integer> AL = new ArrayList<Integer>();
制作ArrayList<Integer> AL
一个实例变量。目前它是一个局部变量。