我正在学习制作一个游戏,而且我几乎完成了主要部分,但是不能让一件事情发挥作用。
我需要从Field.java
生成一些字段
Field.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。 我怎么做?
在我的主要内容中,我尝试过以下操作,但是我得到了空语句
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]
答案 0 :(得分:1)
你需要初始化。你得到的是null,因为对象的默认值是null
。你有declare
但还没有initialize
。
初始化时,您需要将String fieldname,
int fieldnumber
传递给构造函数。您的构造函数有2个参数String fieldname, int fieldnumber
public Field (String fieldname, int fieldnumber)
这就是你需要传递String and int
的原因
felterISpil[0]=new Field("fieldname",1);
felterISpil[1]=new Field("fieldname2",2);
你应该将你想要的值传递给构造函数。如果你想测试它而没有逐个初始化下面的代码将初始化你的字段数组的所有元素
for(int i=0;i<felterISpil.length;i++){
felterISpil[i]=new Field("fieldname",1);
}
System.out.println(Arrays.toString(felterISpil));
输出不再为空
答案 1 :(得分:1)
首先请记住,您正在创建类Field的构造函数。所以在main()之后你通过这个字段felterISpil [] = new Field [40]创建了一个Field类的数组;然后在调用Field类的任何方法之前,你需要通过执行这个felterSpil [index] = new Field(FieldName,FieldNumber)来创建它的对象; 正如你在ur构造函数中指定的那样,语法实际上就是它。 felterSpil [0] = new Field(Field1,1); 然后你可以调用任何方法,你将得到适当的值
答案 2 :(得分:1)
您需要创建每个Field
的实例
请尝试以下方法:
List fields = new ArrayList();
for(int i = 1; i <= 40; i++){
fields.add(new Field("Field"+i, i));
}