<div> class Decktest {<br> public static void main(String args[]){<br> Deck d=new Deck();<br> Card c=d.pick(0);<br> System.out.println(c);<br> d.shuffle();<br> c=d.pick(0);<br> System.out.println(c);<br> }<br> }<br> class Deck{<br> final int CARD_NUM=52; //카드의 개수<br> Card c[]=new Card[CARD_NUM];<br> <br> Deck(){ //Deck의 카드를 초기화시킨다.<br> int i=0;<br> <br> for(int k=Card.KIND_MAX; k>0; k--){<br> for(int n=1; n<Card.NUM_MAX+1;n++){<br> c[i++]=new Card(k,n);<br> <br> }<br> }<br> }<br> Card pick(int index){ //지정된 위치(index)에 있는 카드 하나 선택<br> if(0<=index && index<CARD_NUM)<br> return c[index];<br> else<br> return pick();<br> }<br> <br> Card pick(){ //Deck에서 카드 하나를 선택한다.<br> int index=(int)(Math.random()*CARD_NUM);<br> return pick(index);<br> }<br> void shuffle(){ //카드의 순서를 섞는다.<br> for(int n=0; n<1000; n++){<br> int i=(int)(Math.random()*CARD_NUM);<br> Card temp=c[0];<br> c[0]=c[i];<br> c[i]=temp;<br> }<br> }<br> }//Deck 클래스의 끝<br> class Card{<br> static final int KIND_MAX=4; //카드 무늬의 수<br> final static int NUM_MAX=13; //무늬별 카드 수 <br> <br> static final int SPADE=4;<br> static final int DIAMOND=3;<br> static final int HEART=2;<br> static final int CLOVER=1;<br> <br> int kind;<br> int number;<br> <br> Card(){<br> this(SPADE,1);<br> }<br> Card(int kind,int number){<br> this.kind=kind;<br> this.number=number;<br> }<br> <br> public String toString(){<br> String kind="";<br> String number="";<br> <br> switch(this.kind){<br> case 4:<br> kind="SPADE";<br> break;<br> case 3:<br> kind="DIAMOND";<br> break;<br> case 2:<br> kind="HEART";<br> break;<br> case 1:<br> kind="CLOVER";<br> break;<br> default:<br> }<br> switch(this.number){<br> case 13:<br> number="K";<br> case 12:<br> number="Q";<br> case 11:<br> number="J";<br> default:<br> number=this.number+"";<br> }<br> return "kind:"+kind+",number:"+number;<br> }//to String의 끝<br> }//카드 클래스의 끝</div> <div> </div> <div>오류 수정후 코드</div> <div>-----------------------------------------------------------------------------------------------------------------------------------</div> <div>오류 나는 코드 </div> <div> </div> <div> </div> <div>package ObjectEx2;</div> <div>public class Decktest {<br><br> class Card{<br> static final int KIND_MAX=4; //카드 무늬의 수<br> final static int NUM_MAX=13; //무늬별 카드 수 <br><br> static final int SPADE=4;<br> static final int DIAMonD=3;<br> static final int HEART=2;<br> static final int CLOVER=1;<br><br> int kind;<br> int number;<br><br> Card(){<br> this(SPADE,1);<br> }<br> Card(int kind,int number){<br> this.kind=kind;<br> this.number=number;<br> }<br><br> public String toString(){<br> String kind="";<br> String number="";<br><br> switch(this.kind){<br> case 4:<br> kind="SPADE";<br> break;<br> case 3:<br> kind="DIAMOND";<br> break;<br> case 2:<br> kind="HEART";<br> break;<br> case 1:<br> kind="CLOVER";<br> break;<br> default:<br> }<br> switch(this.number){<br> case 13:<br> number="K";<br> case 12:<br> number="Q";<br> case 11:<br> number="J";<br> default:<br> number=this.number+"";<br> }<br> return "kind:"+kind+",number:"+number;<br> }<br> }<br> class Deck{<br> final int CARD_NUM=52; //카드의 개수<br> Card c[]=new Card[CARD_NUM];<br><br> Deck(){ //Deck의 카드를 초기화시킨다.<br> int i=0;<br><br> for(int k=Card.KIND_MAX; k>0; k--){<br> for(int n=1; n<Card.NUM_MAX+1;n++){<br> c[i++]=new Card(k,n);<br><br> }<br> }<br> }<br> Card pick(int index){ //지정된 위치(index)에 있는 카드 하나 선택<br> if(0<=index && index<CARD_NUM)<br> return c[index];<br> else<br> return pick();<br> }<br><br> Card pick(){ //Deck에서 카드 하나를 선택한다.<br> int index=(int)(Math.random()*CARD_NUM);<br> return pick(index);<br> }<br> void shuffle(){ //카드의 순서를 섞는다.<br> for(int n=0; n<1000; n++){<br> int i=(int)(Math.random()*CARD_NUM);<br> Card temp=c[0];<br> c[0]=c[i];<br> c[i]=temp;<br> }<br> }<br> }<br><br><br>}<br></div> <div> </div> <div> </div> <div> </div> <div> </div> <div> </div> <div> </div> <div> </div> <div>// TODO Auto-generated method stub<br> Deck d=new Deck(); //카드 한벌(Deck)를 만든다<br><font>Card c=d.pick(0); //오류발생! pick 오류</font><br> System.out.println(c); //System.out.println(c.toString());와같다<br><font>d.shuffle();<br> c=d.pick(0);</font><br> System.out.println(c);<br></div> <div>//빨간 부분이 오류이고 오류는 undifined pick(int index)~~ 이였습니다</div> <div> </div> <div>오류는 단순한 스코프 범위를 맟추지 않아서 였습니다..</div> <div> </div> <div>Decktest 클래스를 Deck 클래스가 끝난후 }로 닫아버렸습니다 </div> <div>그래서 안되더라구요....</div> <div>근데 여기서 의문점이 한개 더 생겼습니다.</div> <div> </div> <div> </div> <div>어째서 DeckTest 안에 Card 클래스와 Deck 클래스가 모두 있을때는 오류가 나지않고</div> <div>DeckTest안에 Deck클래스만 있을때는 오류가 생기는 걸까요..</div> <div> </div> <div> <div>Deck 클래스에는 Card라는 함수를 포함시켰으니깐</div> <div>DectTest 밖에서 class Card를 만들어도 </div> <div>Deck안에는 Card 클래스의 정보가 포함되있는 것 아닌가요??</div> <div> </div> <div>전에올린글 답변들 보고 자세히 살펴보고 오류를 수정하고 의문점이 해결됬는데</div> <div>해결되니 또다른 의문점이 생겨서 질문드립니다 ㅠㅠ... 매일 밤마다 질문글 올려서 죄송합니다.</div></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.