Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对象的ArrayList和对象的特定名称_Java_Arraylist - Fatal编程技术网

Java 对象的ArrayList和对象的特定名称

Java 对象的ArrayList和对象的特定名称,java,arraylist,Java,Arraylist,我正在学习制作一个游戏,我几乎完成了游戏的主要部分,但没有一件事情能够成功。 我需要从Field.java java中的代码如下 package matedor; class Field{ private String name; private int number; public Field (String fieldname, int fieldnumber){ this.name = fieldname; this.number

我正在学习制作一个游戏,我几乎完成了游戏的主要部分,但没有一件事情能够成功。 我需要从
Field.java
java中的代码如下

package matedor;

class Field{
    private String name;
    private int number;

    public Field (String fieldname, int fieldnumber){
        this.name = fieldname;
        this.number= fieldnumber;
    }

    public String getFieldname(){
        return name;
    }
    public int getFieldnumber(){
        return number;
    }

    public String toString(){
        return number+name;
    }

    public boolean equals(Object obj){
       Field field = (Field) obj;
        return (number == field.number && name.equals(field.name));
    }
}
我主要需要生成以下不可编辑的内容:

fieldname1, fieldname2.....to fieldname40
我知道我必须使用ArrayList,我想创建40个字段实例,所以我从fieldname1到fieldname40。 我该怎么做

在我的主要工作中,我尝试执行以下操作,但得到了null语句

 Field[] felterISpil=new Field[40];
 System.out.println(Arrays.toString(felterISpil));
输出:

[null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null]

您需要初始化。由于对象的默认值为
null
,因此您将得到null。您已经
声明了
,但尚未
初始化

初始化时需要将
String fieldname,
int fieldnumber
传递给构造函数。构造函数有两个参数
String fieldname,int fieldnumber

public Field (String fieldname, int fieldnumber)
这就是为什么需要传递
字符串和int

你应该把你想要的值传递给构造函数。如果你想测试它而不逐个初始化,下面的代码将初始化你的字段数组的所有元素

for(int i=0;i<felterISpil.length;i++){
   felterISpil[i]=new Field("fieldname",1);
}
System.out.println(Arrays.toString(felterISpil));

for(int i=0;i首先请记住,您正在创建类Field的构造函数。因此在main()中,在通过执行此字段felterspi[]=new Field[40]创建字段类数组之后;然后在调用字段类的任何方法之前,您需要通过执行此felterspi[index]=new Field(FieldName,FieldNumber)创建它的对象;
正如你在你的构造器中指定的那样,它将。
felterSpil[0]=新字段(字段1,1);

然后,您可以调用任何方法,您将获得适当的值

您需要为每个
字段创建一个实例
请尝试以下操作:

List fields = new ArrayList();
for(int i = 1; i <= 40; i++){
    fields.add(new Field("Field"+i, i));
}
List fields=new ArrayList();

对于(int i=1;我这样做时会出错。在Matedor中创建构造函数字段()。Field@user1098185您应该将字符串fieldname,int fieldnumber传递给构造函数,但不要给我任何意义,您想说的:)我想从类Field中创建它谢谢!这太完整了。@user1098185 felterispl[0]=新字段(“开始”,1);请保持括号样式一致,并正确设置代码格式。我的建议可能看起来不太合适,我是通过手机编写的,但已经达到了涵盖您所需内容的程度。好的。希望对您有所帮助
List fields = new ArrayList();
for(int i = 1; i <= 40; i++){
    fields.add(new Field("Field"+i, i));
}