2011-05-25 80 views
0

我試着去滾動骰子,然後系統打印骰子1時即時調用slaTarningar()類播放器裏,的Java:滾動骰子和輸出

class Player{ 
    int armees = 0; 
    int diceAmount = 0; 
    Dice Dices[]; 
    Player(String playerType){ 
     armees = 10; 
     diceAmount = ("A".equals(playerType)) ? 3 : 2; 
     Dices= new Dice[diceAmount]; 
     for(int i=0;i<Dices.length;i++){ 
      Dices[i]=new Dice(); 
     } 
    } 
    void slaTarningar(){ 
     for(int i=0;i<Dices.length;i++){ 
      Dices[i].role(); 
     } 
     System.out.println ("Dice: "+ Dices[1]); 
    } 
    void visaTarningar(){ 
     String allDices=""; 

     for(int i=0;i<Dices.length;i++){ 
      allDices += ", " + Dices[i]; 
     } 
    } 
} 
class Dice{ 
    int value; 
    Dice(){ 
     value=0; 
    } 
    void role(){ 
     int role; 
     role = (int)(Math.random()*6+1); 
     value=role; 
    } 
} 

我得到的是我的項目名稱,很奇怪否則:

Dice: [email protected] 

這裏有什麼問題?

+0

BTW,骰子_is_複數。單數是_die_。 (相信與否) – SLaks 2011-05-25 15:53:35

+0

死,死,死!好吧快點把它捲起來;) – 2011-05-25 15:57:08

回答

1

你需要一個toString方法添加到Dice

class Dice{ 
    int value; 
    Dice(){ 
     value=0; 
    } 
    void role(){ 
     int role; 
     role = (int)(Math.random()*6+1); 
     value=role; 
    } 

    public String toString() { 
     return "" + value + ""; 
    } 
} 

或者添加getValue方法:

class Dice{ 
    int value; 
    Dice(){ 
     value=0; 
    } 
    void role(){ 
     int role; 
     role = (int)(Math.random()*6+1); 
     value=role; 
    } 

    public int getValue() { 
     return value; 
    } 
} 

//.. in other class: 
System.out.println ("Dice: "+ Dices[1].getValue()); 
1
class Dice{ 
    int value; 
    Dice(){ 
     value=0; 
    } 
    void role(){ 
     int role; 
     role = (int)(Math.random()*6+1); 
     value=role; 
    } 

    @Override 
    public String toString() { 
     return value + ""; 
    } 

} 

你需要告訴Java的如何打印骰子對象 - 否則它使用的內部表示(對象的類和它的散列碼)從Object.toString()

0

您需要添加一個「的toString」方法你的骰子課。

0

你需要重寫Dice.toString()

0

你的論點的println方法是"Dice: "+ Dices[1]

+運算符可以將一個String與一個任意對象連接起來,它通過首先將該對象轉換爲一個String來完成。它能夠這樣做是因爲存在Object.toString()實例方法,該方法返回任何對象的字符串表示形式。

這就是在這裏被稱爲將Dice[1]轉換爲一個字符串常量(你看到的是從Object繼承的toString()的默認實現)。

所以,你有兩個選擇,以解決此問題:

  1. 覆蓋public String toString()Dice類。請注意,這將是您的類的實例的默認「字符串表示形式」,它們以文本形式輸出,因此請選擇在一般情況下有意義的內容。或者:
  2. Dice引用的值明確地傳遞給println語句。類似於println("Dice: " + Dices[1].value)
1

您正在打印對象,而不是值。使用

System.out.println ("Dice: "+ Dices[1]*.value*); 

或者您可以添加toString()方法到Dice類。