垄断博弈的发展

时间:2015-10-05 11:42:21

标签: java

我似乎遇到了子任务问题。它是丹麦语,所以我加入了它的翻译版本:

  
      
  • 创建一个类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,......]

3 个答案:

答案 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 +"]");