2014-04-19 5 views
0

카드 게임을 만들고 카드 클래스와 데크 클래스를 준비하면 괜찮습니다. 그러나 갑판의 메서드 makeDeckFull을 실행하려고하면 출력이 표시됩니다 : invalidnumberinvalidnumber. ..Bluej ArrayList 추가

나는 showDeck 방법을 사용할 때 그때 (내가 무슨 뜻인지 모르거나 그것을 해결하는 방법) 대신에 "마음", 1 카드 597f13c5 @의이 참조

어떤 도움이 될 것이다 친절하게 감사드립니다 : 아래 코드.

갑판 등급 :

import java.util.ArrayList; 
public class Deck 
{ 
    private ArrayList<Cards> deck; 
    private int index; 

    public Deck() 
    { 
     deck = new ArrayList<Cards>(); 
    } 

    public void makeDeckFull() 
    { 
     Cards h1 = new Cards("Hearts", 1); 
     Cards h2 = new Cards("Hearts", 2); 
     Cards h3 = new Cards("Hearts", 3); 
     deck.add(h1); 
     index ++; 
     deck.add(h2); 
     index ++; 
     deck.add(h3); 
     index ++; 
     //Rest of these is left out to conserve space 
    } 

    public void showDeck() 
    { 
     System.out.println(deck); 
    } 

카드 클래스 :

public class Cards 
{ 
    private String HEARTS = "Hearts"; 
    private String CLUBS = "Clubs"; 
    private String DIAMONDS = "Diamonds"; 
    private String SPADES = "Spades"; 
    public int number; 
    public String suit; 
    public Cards() 
    { 
     suit = "unknown suit"; 
     number = 0; 
    } 

    public Cards(String suit, int number) 
    { 
     setSuit(suit); 
     setNumber(number); 

    } 

    public void setCard(String suit, int number2) 
    { 
     setSuit(suit); 
     setNumber(number2); 

    } 
    public void setSuit(String newSuit) 
    { 
     if(
      (newSuit.equalsIgnoreCase(HEARTS)) || 
      (newSuit.equalsIgnoreCase(DIAMONDS)) || 
      (newSuit.equalsIgnoreCase(CLUBS)) || 
      (newSuit.equalsIgnoreCase(SPADES))) 
     { 
      suit = newSuit; 
     } 
     else 
     { 
      newSuit = "invalid"; 
      System.out.print("Invalid"); 
     }   
    } 
    public int getNumber() 
    { 
     return number; 
    } 
    public String getSuit() 
    { 
     return suit; 
    } 

    public void setNumber(int newNumber) 
    { 

     if(newNumber >0 && newNumber <=10) 
     { 
      number = newNumber; 
     } 
     else 
     { 
      number = 0; 
      System.out.print("invalid number"); 
     } 
    } 
} 
+1

'setDeck' 메소드가 표시되지 않습니다. 또한, Cards @ 597f13c5는 Cards 클래스의 toString 메소드를 오버라이드하지 않았다는 것을 의미합니다. – csmckelvey

+0

또는'print' 메소드. – Jazzepi

+0

내 beeing에 대한 나쁜, 내가 곧 편집, makeDeckFull 방법과 showDeck, 미안 다시 나쁘다. – user3547716

답변

0

1) 당신은 Cards 클래스 toString()를 오버라이드 (override) 할 필요가있다. 즉, "데이터"대신 객체의 참조 (횡설수설)를 인쇄합니다. 목록 만 인쇄하려면 toString() 메서드를 재정의해야합니다.

2) makeDeckFull()의 코드 스 니펫을 살펴보고 잘 작동하는 것 같습니다. 3 개의 인서트가 유효하지 않은 인쇄 문을 가져 오는 위치에 있습니까?

+0

어떻게 toString()을 재정의합니까? – user3547716

+0

와우, 그게 실제로 효과가!, 비록 내가 어떻게 ... 남자 야! – user3547716

+0

괜찮습니다! 내 대답이 도움이 되었다면 동의 해주십시오! :) –