프로그래밍 언어/JAVA

<Java> 명품 Java programming 6장 9~11

창조적생각 2021. 7. 14. 17:31

9. 철수와 컴퓨터의 가위바위보 게임을 만들어보자. 가위, 바위, 보는 각각 1,2,3 키이다. 철수가 키를 입력하면, 동시에 프로그램도 Math.Random()을 이용하여 1,2,3 중에 한 수를 발생시키고 이것을 컴퓨터가 낸 것으로 한다. 그런 다음 철수와 컴퓨터 중에 누가 이겼는지 판별하여 승자를 출력하라.

 

[실행결과]

철수[가위(1), 바위(2), 보(3),끝내기(4)]>>1
가위 : 가위
비겼습니다.
철수[가위(1), 바위(2), 보(3),끝내기(4)]>>2
바위 : 가위
철수가 이겼습니다.
철수[가위(1), 바위(2), 보(3),끝내기(4)]>>3
보 : 가위
컴퓨터가 이겼습니다.
철수[가위(1), 바위(2), 보(3),끝내기(4)]>>4
종료합니다.

 

[풀이]

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
74
75
76
77
78
package practice6_9;
import java.util.Scanner;
class transmission{
    private String s;
    transmission(){
        
    }
    String transrps(int i){
        switch(i) {
        case 1:
            return "가위";
        case 2:
            return "바위";
        case 3:
            return "보";
        case 4 :
            return "끝내기"
        default :
            return "잘못입력하셨습니다.";
        }
    }
    int com_rando() {
        return (int) (Math.floor(Math.random()*2)+1);
    }
    public void printrst(int a, int b){
        switch (a) {
        case 1:{
            if (b == 2)
                System.out.println("컴퓨터가 이겼습니다.");
            else if (b == 3)
                System.out.println("철수가 이겼습니다.");
            else System.out.println("비겼습니다.");
        }break;
        case 2:{
            if(b == 1)
                System.out.println("철수가 이겼습니다.");
            else if(b == 3)
                System.out.println("컴퓨터가 이겼습니다.");
            else System.out.println("비겼습니다.");
        
        }break;
        case 3:
        {
            if(b == 1)
                System.out.println("컴퓨터가 이겼습니다.");
            else if(b == 2)
                System.out.println("철수가 이겼습니다.");
            else System.out.println("비겼습니다.");
        }break;
        }
    }
        
    }
    
public class rockpaperscissors {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int n = 0;
        int nc = 0;
        Scanner scanner = new Scanner(System.in);
        transmission trs = new transmission();
        while(true) {
        System.out.print("철수[가위(1), 바위(2), 보(3),끝내기(4)]>>");
        n = scanner.nextInt();
        if(n == 4) {
            System.out.println("종료합니다.");
            break;}
        nc = trs.com_rando();
        System.out.println(trs.transrps(n)+" : "+trs.transrps(nc));
        trs.printrst(n,nc);}
    
    
    
    
    }
 
}
cs

 

10. 겜블링 게임을 만들어보자. 두 사람이 게임을 진행한다. 이들의 이름을 키보드로 입력받으며, 각 사람은 Person 클래스로 작성하라. 그러므로 프로그램에는 2개의 person 객체가 생성되어야 한다. 두 사람은 번갈아 가면서 게임을 진행하는데 각 사람이 자기 차례에서 <Enter>키를 입력하면, 3개의 난수가 발생되고 이 숫자가 모두 같으면 승자가 되고 게임이 끝난다. 난수의 범위를 너무 크게 잡으면 3개의 숫자가 일치하게 나올 가능성이 적기 때문에 숫자의 범위는 1~3까지로 한다.

[실행결과]

1번째 선수 이름수희
2번째 선수 이름연수
[수희]
   2  3  1
아쉽군요!
[연수]
   3  3  3
연수이겼습니다.

 

[풀이]

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
package practice6_10;
import java.util.Scanner;
class Person{
    Scanner scanner = new Scanner(System.in);
    String name;
    int S,Y;
    Person(String name){
        this.name = name;
    }
    int machine(){
        int a = (int) Math.floor(Math.random()*3+1);
        int b = (int) Math.floor(Math.random()*3+1);
        int c = (int) Math.floor(Math.random()*3+1);
        
        System.out.print("["+name+"]");
        scanner.nextLine();
        System.out.println("   "+a+"  "+b+"  "+c);
        if(a == b && b ==c) {
            System.out.println(name+"이겼습니다.");
        return 1;
        }
        else {System.out.println("아쉽군요!");
        return 2;
        }
        
        
    }
}
 
public class slotmachine {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("1번째 선수 이름");
        String S = scanner.next();
        System.out.print("2번째 선수 이름");
        String Y = scanner.next();
        Person s = new Person(S);
        Person y = new Person(Y);
        while(s.machine() ==2 && y.machine() == 2){
        s.machine();
        y.machine();
        }
        
        
        
        
    }
 
}
 
cs

11.StringBuffer 클래스를 활용하여 명령처럼 문자열을 수정하라. 아래 실행 예시에서 
love!LOVE 는 love를 찾아 LOVE로 수정하라는 명령이다. 첫 번째 만난 문자열만 수정한다.

[풀이]

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
package practice06_11;
import java.util.Scanner;
public class StringBuffer_pr {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.print(">>");
        Scanner scanner = new Scanner(System.in);
        String text = scanner.nextLine(); 
        StringBuffer sb = new StringBuffer(text);
        
        while(true) {
            System.out.print("명령: ");
            String cmd = scanner.nextLine(); 
            if(cmd.equals("그만")) {
                System.out.print("종료합니다");
                break;
            }
            String [] tokens = cmd.split("!");
            if(tokens.length != 2) {
                System.out.println("잘못된 명령입니다!");
            }
            else {
                if(tokens[0].length() == 0 || tokens[1].length() == 0) {
                    System.out.println("잘못된 명령입니다!");
                    continue;
                }
                
                int index = sb.indexOf(tokens[0]);
                if(index == -1) { // not found!
                    System.out.println("찾을 수 없습니다!");
                    continue;
                }
                sb.replace(index, index+tokens[0].length(), tokens[1]);
                System.out.println(sb.toString());
            }
        }
        
        scanner.close();
    }
}
 
cs

 

 

728x90