Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么要跳过这些行?(爪哇)_Java_Methods - Fatal编程技术网

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

Java 为什么要跳过这些行?(爪哇),java,methods,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

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

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]) ; 
    } 

}

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]) ; 
    } 

}
为什么这两行没有在printDice内部执行:

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

如果他们有,我希望看到“a1”和“Value:0”打印在
行的顶部,这可能是因为您发布的代码实际上都没有调用
printDice()


除了
main()
方法之外,类中的任何方法都不会被神奇地调用-它们需要被其他代码调用。

可能是因为您发布的代码都不会真正调用
printDice()

除了
main()
方法之外,类中的任何方法都不会被神奇地调用-它们需要被其他代码调用。

printDice()
永远不会被调用:

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

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

您正在调用printValues,您可能打算调用printDice。

您正在调用printValues,您可能打算调用printDice。

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

public static void printDice (Dice Dice) { /* ... */ }

你走在薄冰上了,伙计。阅读代码很难知道是调用静态方法还是实例方法。我必须承认,我很惊讶Java允许这样的事情,因为它看起来非常危险,阅读时很难理解。在空闲时间——而不是编码——读一些鲍勃叔叔的文章;)和平

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

public static void printDice (Dice Dice) { /* ... */ }

你走在薄冰上了,伙计。阅读代码很难知道是调用静态方法还是实例方法。我必须承认,我很惊讶Java允许这样的事情,因为它看起来非常危险,阅读时很难理解。在空闲时间——而不是编码——读一些鲍勃叔叔的文章;)和平

哇。是的。那就行了。我有时非常想念事情。是的。那就行了。有时我会非常想念这些东西。对于这类事情,一个很好的策略是从一开始就对代码进行逐步检查,并手动跟踪代码,确保代码指示的位置,你不应该像类那样命名变量,因为
Dice.name
看起来你想访问类
Dice
的静态字段
name
,但实际上你想从对象访问字段。看,这类事情的一个好策略是从一开始就一步一步地检查代码,并手动跟踪代码,确保代码指示的位置,你不应该像类那样命名变量,因为
Dice.name
看起来你想访问类
Dice
的静态字段
name
,但实际上你想从对象访问字段。看见