我似乎遇到了子任务问题。它是丹麦语,所以我加入了它的翻译版本:
- 创建一个类
Field
,代表垄断游戏的领域。最初,Field
可以包含这些封装的变量:
String name
- 字段的简称- 范围内的数字
int number
- [1..40]两个变量都必须在构造函数中初始化,并且必须只有getter,因为它们在创建后永远不会被更改。 此外,应该有一个带有签名
public String toString()
的方法,因此很容易打印出玩家登陆的Field
。 首先,它允许只调用字段Field1,Field2 ......
我的Field类看起来像这样:
public class Field {
String name;
int number;
public Field(String name, int number) {
this.name = name;
this.number = number;
}
public String getName() {
return name;
}
public int getNumber() {
return number;
}
}
在我的main
方法中,我想测试一下。所以我写了以下内容:
Field[] board = new Field[40]; // a board containing 40 fields
for (int i = 0; i < board.length; i++) {
board[i] = new Field("Field" + (i + 1), i + 1);
}
System.out.println("Board: " + Arrays.toString(board));
在我的控制台中我得到了这个:
董事会:[test.Field@2a139a55,test.Field@15db9742,test.Field@6d06d69c, ......]
我想要这个:
董事会:[Field1,Field2,Field3,......]
答案 0 :(得分:6)
覆盖Field
的{{1}}以返回名称,即
toString()
您获得的内容(例如public String toString() {
return name;
}
)是test.Field@2a139a55
的默认实现,可在toString()
中找到:
Object
答案 1 :(得分:3)
你错过了
此外,应该有一个使用signatur public String toString(),
的方法
你的部分任务。
答案 2 :(得分:1)
你能用java8吗?然后我会建议:
Field[] board = new Field[40]; // a board containing 40 fields
for(int i = 0; i < board.length; i++){
board[i] = new Field("Field" + (i + 1), i + 1);
}
String commaSeparatedName =
Arrays.stream(board) // all items as stream
.map(Field::getName) // for each take its name
.collect(Collectors.joining(", "); // join names with a comma
System.out.println("Board: [" + commaSeparatedNames +"]");