2010-04-14 6 views
1

여기 소스 코드의 중요한 비트이다 :왜이 라인을 건너 뛰고 있습니까? (자바)

#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 
:

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

} 

가 출력되고

왜이 두 라인은 printDice 내부 실행하지 못했습니다 : #of

의 행의 상단에 인쇄 :

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

가 있었다면 그때 "A1"과 "0 값"을 참조하십시오 기대

+3

이런 종류의 좋은 전략은 처음부터 코드를 단계별로 실행하여 코드를 손으로 추적하고 코드가 어디에 있는지 확인하고 코드가 말하는 위치가 아닌 곳으로 이동하는 것입니다. –

+3

'Dice.name' 클래스는'Dice' 클래스의 정적 필드'name'에 액세스하려는 것처럼 보이기 때문에 클래스와 같은 변수 이름을 지정하지 않아야하지만 실제로 객체의 필드에 액세스하려고합니다. http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html – Progman

답변

4

printDice()가 호출되지 않습니다 : 당신은 printValues를 호출

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

게시 한 코드가 실제로 printDice()이 (가) 호출되지 않았기 때문일 것입니다.

main() 메서드를 제외하고 클래스의 메서드는 마술처럼 호출되지 않으므로 다른 코드에서 호출해야합니다.

+0

와우를 참조하십시오. 야아. 그럴거야. 나는 너무 심하게 일을 그리워한다. – David

3

어디 아마 printDice 전화를 의미한다.

0

저는 Java 마스터가 아니지만 클래스 이름을 지정하는 것과 같은 방법으로 매개 변수의 이름을 지정하지 않는 것이 좋습니다. 쓸 때 :

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

당신은 얇은 얼음을 타고 있습니다. 정적 메서드 나 인스턴스 메서드를 호출하면 코드를 읽는 것이 어렵습니다. 나는 자바가 독서를 할 때 매우 위험하고 이해하기 어려운 것처럼 보이는 것을 허용한다는 것에 놀랐다는 것을 인정해야한다. 자유 시간에 (코딩하지 않는 동안) Bob 삼촌의 텍스트를 읽으십시오;) 평화!

관련 문제