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
,但实际上你想从对象访问字段。看见