Java:滚动骰子和输出

时间:2011-05-25 15:48:19

标签: java

我试图滚动骰子然后系统打印骰子当我在类Player中调用slaTarningar()时,

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: javaapplication9.Dice@9304b1 

这里有什么问题?

6 个答案:

答案 0 :(得分: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如何打印Dice对象 - 否则它使用来自Object.toString()的内部表示(对象的类及其哈希码)

答案 1 :(得分:1)

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

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

或者您可以将一个toString()方法添加到Dice类。

答案 2 :(得分: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());

答案 3 :(得分:0)

您需要在Dice类中添加“toString”方法。

答案 4 :(得分:0)

您需要覆盖Dice.toString()

答案 5 :(得分:0)

您对println方法的论证是"Dice: "+ Dices[1]

+运算符可以将String与任意对象连接起来,它通过首先将对象转换为String来实现。它能够做到这一点,因为Object.toString()实例方法的存在,它返回任何对象的字符串表示。

这就是在这里调用Dice[1]转换为字符串常量(你看到的toString()的默认实现,它继承自Object)。

因此,您有两种方法可以解决此问题:

  1. 覆盖public String toString()课程上的Dice。请注意,这将是您的类的实例的默认“字符串表示”,它们将作为文本输出,因此请选择在一般上下文中有意义的内容。或者:
  2. Dice引用的值显式传递给println语句。像println("Dice: " + Dices[1].value)
  3. 之类的东西