2012-11-11 5 views
0

내 데크에서 Card 객체의 배열을 만들고 업데이트 된 것을 성공적으로 인쇄합니다. 나는이 프로그램을 구현하기 위해 세 번째 클래스를 만들고 싶다 : 데크 객체를 만들고, 플레이어에게 원하는 카드의 수를 물어 본 다음, 무작위로 그들을 넘겨 준다. 맨 아래에있는 PlayingTable 클래스에서 저는 갑판의 인스턴스를 만들고 그것을 스캔하여 갑판의 모든 정보를 확인하려고합니다.다른 클래스의 배열 객체를 검색해야합니다.

공용 클래스 : 그것은

여기 두 클래스에 대한 내 코드입니다 .... 그것이 배열이 아닌, 그리고 내가 당장은 아주 확실하지 않다 때문에 나는 갑판 객체를 검색 할 수 없습니다 말한다 카드

{

//Instance properties// 
    private String cardNum; 
    private String cardSuit; 

    //Instance Methods // 
    //Constructor, create an instance of card 
    public Card(String num , String suit) 
    { 
     System.out.println("Creating a card."); 
     cardNum = num ; 
     cardSuit = suit;  
    }  
    public void display() 
    { 
    System.out.println("This card is a" + " "+ cardNum + cardSuit); 
    } 

}

공용 클래스 데크

{ // 인스턴스 속성 //

//Number of cards in a deck 
public static int numCards = 52; 
private static Card [ ] deck= new Card [numCards]; 
private static String [ ] cardValue = { "Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King" } ; 
private static String [ ] cardSuit = { " of Hearts" , " of Spades", " of Clubs", " of Diamonds" }; 

//Instance methods and Constructor// 
/*public void Deck () 
{ 


}*/ 

public static void fillDeck () 
{ 

    int eachCard = 0 ; 

    for (int i = 0; i < cardValue.length ; i++) 
    { 
    for (int j = 0 ; j < cardSuit.length ; j++) 
     { 

     deck[eachCard++] = new Card (cardValue [i] , cardSuit [j]); 

     } 
    } 
} 

public static void getDeck() 
{ 
    for (int i = 0; i < numCards ; i++) 
    { 
    fillDeck(); 
    //System.out.println(" This is card" + i + " " + " of the deck"); 
    deck[i].display(); 
    } 
} 
public static void main (String [] args) 
{ 
    getDeck(); 
} 

}

공용 클래스 PlayingTable { 정적 갑판 dealersDeck = 새로운 데크();

public static void main (String [] args) 
    { 

     for (int i = 0 ; i < 52; i++) 
     { 
       System.out.println (dealersDeck[i].getDeck()); 
     } 

    } 

}

+3

코드를 정리하고 작업중인 언어로 다시 태그를 지정하십시오. 문제의 원인이되는 줄을 정확히 지적하십시오. –

+0

아직 깨끗하게 읽을만큼 잘 읽지는 못했지만 문제가되는 것은 제 루프입니다. –

답변

0

Q : 어떻게 정보 양식을 하나 개의 클래스를 ... 표시 할 [의] ... 다른 클래스?

A : "다른 클래스"에 공개 "getter"메소드를 제공하십시오 (또는 #을 "프로그래밍"하는 경우).

그리고 자바 "게터/세터"방법에 대한 토론 :

여기에 C#을 특성에 대한 좋은 튜토리얼입니다 피나 lly, OO "캡슐화"에 대한 토론입니다. 실제로 "속성", "getter/setter 메서드"를 초월한 문제입니다 ... ..."에서 하나 개의 클래스에 표시 정보를 다른"당신은 numCards -1

private static Card [ ] deck = new Card [numCards-1]; 

하지만 결코의 크기로 초기화 카드 오브젝트를 개최 배열을 생성

+0

고마워요. 계속 지켜 드리겠습니다. –

0

그것에 물건을 넣으세요. 전화 할 때

deck[i].display(); 

존재하지 않는 무언가에 display 메서드를 호출하면 배열 (makeDeck())을 채우는 메서드가 있지만 결코 호출하지 않습니다.

엔티티 클래스 파일 내에 main()이 있으면 편리 할 수 ​​있지만 코드의 오류도 마스크 처리 할 수 ​​있습니다. 나는 당신이 별도의 수업에서 시험을하는 것이 좋습니다.

+0

그래, 인쇄 할게. 하지만 지금은 내 for 루프가 j (각 카드에 0-13 형태로 값을 증가시키는 값을 제공함)을 유지합니다 ... 왜 j가 증가하지 않는지를 알 수는 없지만 조금만 조정 해 보았습니다. 같은 결과 –

+0

내부 루프를 봐, 당신은 j를 사용해야 할 때 조건을 사용하고있다. 증가하고 멈추는 조건이다. – gebuh

+0

나는 그것을 행운으로 j로 바꿨다. 나는 사이트에 새로운데 어떻게 알지 못했다. 내 오래된 하나를 수정합니다 .. 죄송합니다 –

관련 문제