게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
어제 Card관련 문제 올린 작성자입니다. 한가지만더 질문하겠습니다 ㅠㅠ
게시물ID : programmer_10733짧은주소 복사하기
작성자 : 오늘너무
추천 : 0
조회수 : 316회
댓글수 : 4개
등록시간 : 2015/06/02 21:41:39
옵션
  • 창작글
  • 본인삭제금지
 class Decktest {
  public static void main(String args[]){
   Deck d=new Deck();
   Card c=d.pick(0);
   System.out.println(c);
   d.shuffle();
   c=d.pick(0);
   System.out.println(c);
  }
 }
  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;
    }
   }
  }//Deck 클래스의 끝
   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;
     }//to String의 끝
   }//카드 클래스의 끝
 
오류 수정후 코드
-----------------------------------------------------------------------------------------------------------------------------------
오류 나는 코드
 
 
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); //오류발생! pick 오류
   System.out.println(c); //System.out.println(c.toString());와같다
d.shuffle();
c=d.pick(0);

System.out.println(c);
//빨간 부분이 오류이고 오류는 undifined pick(int index)~~ 이였습니다
 
오류는 단순한 스코프 범위를 맟추지 않아서 였습니다..
 
Decktest 클래스를 Deck 클래스가 끝난후 }로 닫아버렸습니다
그래서 안되더라구요....
근데 여기서 의문점이 한개 더 생겼습니다.
 
 
어째서 DeckTest 안에 Card 클래스와 Deck 클래스가 모두 있을때는 오류가 나지않고
DeckTest안에 Deck클래스만 있을때는 오류가 생기는 걸까요..
 
Deck 클래스에는 Card라는 함수를 포함시켰으니깐
DectTest 밖에서 class Card를 만들어도
Deck안에는 Card 클래스의 정보가 포함되있는 것 아닌가요??
 
전에올린글 답변들 보고 자세히 살펴보고 오류를 수정하고 의문점이 해결됬는데
해결되니 또다른 의문점이 생겨서 질문드립니다 ㅠㅠ... 매일 밤마다 질문글 올려서 죄송합니다.
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호