package ObjectEx2;
public class Decktest {
class Card{
static final int KIND_MAX=4; //카드 무늬의 수
final static int NUM_MAX=13; //무늬별 카드 수
static final int SPADE=4;
static final int DIAMOND=3;
static final int HEART=2;
static final int CLOVER=1;
int kind;
int number;
Card(){
this(SPADE,1);
}
Card(int kind,int number){
this.kind=kind;
this.number=number;
}
public String toString(){
String kind="";
String number="";
switch(this.kind){
case 4:
kind="SPADE";
break;
case 3:
kind="DIAMOND";
break;
case 2:
kind="HEART";
break;
case 1:
kind="CLOVER";
break;
default:
}
switch(this.number){
case 13:
number="K";
case 12:
number="Q";
case 11:
number="J";
default:
number=this.number+"";
}
return "kind:"+kind+",number:"+number;
}
}
class Deck{
final int CARD_NUM=52; //카드의 개수
Card c[]=new Card[CARD_NUM];
Deck(){ //Deck의 카드를 초기화시킨다.
int i=0;
for(int k=Card.KIND_MAX; k>0; k--){
for(int n=1; n<Card.NUM_MAX+1;n++){
c[i++]=new Card(k,n);
}
}
}
Card pick(int index){ //지정된 위치(index)에 있는 카드 하나 선택
if(0<=index && index<CARD_NUM)
return c[index];
else
return pick();
}
Card pick(){ //Deck에서 카드 하나를 선택한다.
int index=(int)(Math.random()*CARD_NUM);
return pick(index);
}
void shuffle(){ //카드의 순서를 섞는다.
for(int n=0; n<1000; n++){
int i=(int)(Math.random()*CARD_NUM);
Card temp=c[0];
c[0]=c[i];
c[i]=temp;
}
}
}
}
// TODO Auto-generated method stub
Deck d=new Deck(); //카드 한벌(Deck)를 만든다
Card c=d.pick(0); //섞기 전에 제일 위에 카드를 뽑는다.
System.out.println(c); //System.out.println(c.toString());와같다
d.shuffle();
c=d.pick(0);
System.out.println(c);
빨간줄에 오류가 납니다 도대체 이유를 모르겠습니다.
제가 해석하기에
Deck d=new Deck(); ->메인에서 Deck클래스를 참조해 d라는 객체를 만듭니다.
Card c=d.pick(0) <- Card c의 뜻을 잘모르겠습니다. Card 클래스에 정보를 가진 c에 pick 메서드를 사용해 맨위에 카드를 저장하는 건가요?
System.out.println(c); //System.out.println(c.toString());와같다 ->c를 출력합니다
d.shuffle();->shuffle이란 메서드를 이용하여 카드를 섞습니다.
c=d.pick(0);->섞은 후 맨위에 카드를 뽑습니다.
System.out.println(c);->c를 출력합니다.
오류가 왜 나는지 잘 모르겠습니다. 책대로 똑같이 했고
c라는 객체가 만들어지는걸로 보아 pick함수를 못읽는거같은데
이유를 잘모르겠습니다 ㅠㅠ.