게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[본삭금] 자바 포함 문제..?
게시물ID : programmer_10695짧은주소 복사하기
작성자 : 오늘너무
추천 : 0
조회수 : 467회
댓글수 : 8개
등록시간 : 2015/06/01 23:33:56
옵션
  • 창작글
  • 본인삭제금지
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함수를 못읽는거같은데
이유를 잘모르겠습니다 ㅠㅠ.
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호