为什么要跳过这些行? (Java)的

时间:2010-04-14 20:19:10

标签: java methods

以下是源代码的相关部分:

class Dice 
{ 
    String name ; 
    int x ; 
    int[] sum ;  

...

public Dice (String name) 
{ 
    this.name = name ; 
    this.x = 0 ; 
    this.sum = new int[7] ; 
}

...

    public static void main (String[] arg) 
    {
        Dice a1 = new Dice ("a1") ; 
        printValues (a1) ; 
    }

    public static void printDice (Dice Dice) 
    { 
        System.out.println (Dice.name) ; 
        System.out.println ("value: "+Dice.x) ; 
        printValues (Dice) ; 
    } 

    public static void printValues (Dice Dice) 
    { 
        for (int i = 0; i<Dice.sum.length; i++) 
        System.out.println ("#of "+i+"'s: "+Dice.sum[i]) ; 
    } 

}

这是输出:

#of 0's: 0
#of 1's: 0
#of 2's: 0
#of 3's: 0
#of 4's: 0
#of 5's: 0
#of 6's: 0

为什么这两行不在printDice内执行:

    System.out.println (Dice.name) ; 
    System.out.println ("value: "+Dice.x) ; 

如果他们有,那么我希望在#of的行的顶部打印出“a1”和“Value:0”

4 个答案:

答案 0 :(得分:8)

可能是因为您发布的所有代码都没有实际调用printDice()

除了main()方法之外,您的类中没有任何方法被神奇地调用 - 它们需要被其他一些代码调用。

答案 1 :(得分:4)

永远不会调用

printDice()

public static void main (String[] arg) 
{
    Dice a1 = new Dice ("a1") ; 
    printValues (a1) ; // You only call printValues
}

答案 2 :(得分:3)

您正在调用printValues,您可能需要调用printDice。

答案 3 :(得分:0)

我不是Java大师,但我认为你最好避免以命名类的方式命名参数。当你写:

public static void printDice (Dice Dice) { /* ... */ }
你正走在薄冰上,老兄。读取代码时,很难知道是调用静态方法还是实例方法。我不得不承认,我很惊讶Java允许这样的东西,因为它似乎非常危险并且在阅读时很难理解。在空闲时间 - 虽然没有编码 - 阅读一些鲍勃叔叔的文本;)和平!