자바/자바의정석-연습문제

자바의정석 연습문제 풀이 7장 7-2

김발자~ 2022. 10. 3. 17:01
반응형

자바의 정석 3판 연습문제 풀이

 

연습문제 파일은 아래 링크에서 다운받을 수 있다

https://github.com/castello/javajungsuk3/tree/master/%EC%97%B0%EC%8A%B5%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4

 

GitHub - castello/javajungsuk3: soure codes and ppt files of javajungsuk 3rd edition

soure codes and ppt files of javajungsuk 3rd edition - GitHub - castello/javajungsuk3: soure codes and ppt files of javajungsuk 3rd edition

github.com

 

 

http://www.yes24.com/Product/Goods/24259565

 

Java의 정석 - YES24

최근 7년동안 자바 분야의 베스트 셀러 1위를 지켜온 `자바의 정석`의 최신판. 저자가 카페에서 12년간 직접 독자들에게 답변을 해오면서 초보자가 어려워하는 부분을 잘 파악하고 쓴 책. 뿐만 아

www.yes24.com

자바의 정석 저자 남궁성 님이 직접 올려주신 문제다

 


7장은 총 29문제로 구성되어 있다


7-2


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
class SutdaDeck {
    final int CARD_NUM = 20;
    SutdaCard[] cards = new SutdaCard[CARD_NUM];
    
    SutdaDeck() {
        for(int i = 0; i < cards.length; i++) {
            int num = i%10 + 1;
            boolean isKwang = ((i < 10&& (num == 1||num == 3|| num == 8));
 
            cards[i] = new SutdaCard(num, isKwang);
        }
    }
    
    public void shuffle() {
        for(int i = 0; i < cards.length; i++) {
            int j = (int)(Math.random()*cards.length); //0~(cards.length-1)
            
            SutdaCard tmp = cards[i]; //tmp 타입 = SutdaCard임에 주의
            cards[i] = cards[j];
            cards[j] = tmp;
        }
    }
    
    public SutdaCard pick(int index) {
        //내가 빼먹은 유효성 검사
        if(index < 0 || index >= CARD_NUM)
            return null;
        //
        return cards[index];
    }
    
    public SutdaCard pick() {
        return cards[(int)(Math.random()*cards.length)];
    }
}
 
class SutdaCard {
    int num;
    boolean isKwang;
    
    SutdaCard() {
        this(1true);
    }
    
    SutdaCard(int num, boolean isKwang){
        this.num = num;
        this.isKwang = isKwang;
    }
        
    public String toString() {
        return num + (isKwang ? "K":"");
    }
}
 
class Exercise7_1_2 {
 
    public static void main(String[] args) {
        SutdaDeck deck = new SutdaDeck();
        
        System.out.println(deck.pick(0));
        System.out.println(deck.pick());
        deck.shuffle();
        
        for(int i = 0; i < deck.cards.length; i++) {
            System.out.print(deck.cards[i]+",");
        }
        
        System.out.println();
        System.out.println(deck.pick(0));
 
    }
 
}
cs

 

유효성 검사를 빼먹어서 주석으로 표시해놨다

(int) Math.random * n = 0부터 (n-1)까지임을 잊지 말자 

 

 

 


 

반응형