簡體   English   中英

壟斷游戲的發展

[英]Development of monopoly game

我似乎對子任務有問題。 它是丹麥文,所以我輸入了它的翻譯版本:

  • 創建一個Field類,它表示壟斷游戲的字段。 最初, Field可以包含以下封裝的變量:
    • String name -字段的簡稱
    • int number number-范圍為[1..40]的數字

這兩個變量都必須在構造函數中初始化,並且只能有吸氣劑,因為它們在創建后將永遠不會更改。 而且,應該有一個帶有簽名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,...]

覆蓋FieldtoString()以返回名稱,即

public String toString() {
  return name;
}

您得到的內容(例如test.Field@2a139a55 )是toString()的默認實現,可以在Object找到:

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

你錯過了

此外,應該有一個方法,其簽名為public String toString(),

您的任務的一部分。

您可以使用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 +"]");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM