Java:Ch6 실습 문제

aiden·2023년 9월 10일

Java

목록 보기
11/30

#10

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

package main;

import java.util.Scanner;

class Person{
    String name;
    String getName(){return this.name;}
    public Person(String name){this.name = name;}
}

public class Practice {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String name;

        System.out.print("1번째 선수 이름 : ");
        name = scanner.next();
        Person p1 = new Person(name);

        System.out.print("2번째 선수 이름 : ");
        name = scanner.next();
        Person p2 = new Person(name);

        String s;
        s = scanner.nextLine();
        int who = 0;
        while(true){
            Person p;
            if(who == 0){
                p = p1;
                who = 1;
            }
            else{
                p = p2;
                who = 0;
            }
            System.out.print("[" + p.getName() + "]:");

            s = scanner.nextLine();
            int num [] = new int[3];
            for(int i = 0; i < 3; i++) {
                num[i] = (int) (Math.random() * 3 + 1);
                System.out.print(num[i] + " ");
            }
            if(num[0] == num[1] && num[0] == num[2]){
                System.out.println(p.getName() + "님이 이겼습니다!");
                break;
            }
            else{
                System.out.println("아쉽군요!");
            }
        }
        scanner.close();
    }
}

1번째 선수 이름 : Nick
2번째 선수 이름 : Charlie
[Nick]:
2 2 3 아쉽군요!
[Charlie]:
1 1 1 Charlie님이 이겼습니다!

1번째 선수 이름 : Tao
2번째 선수 이름 : Elle
[Tao]:
2 1 2 아쉽군요!
[Elle]:
3 2 1 아쉽군요!
[Tao]:
1 1 1 Tao님이 이겼습니다!

#11

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

우리는 love Java Programming.
명령: 우리는!We
We love Java Programming.
명령: LOV!사랑
찾을 수 없습니다!
명령: !Java
찾을 수 없습니다!
명령: love!LOVE
We LOVE Java Programming.
명령: 그만
종료합니다

package main;

import java.util.Scanner;
import java.util.StringTokenizer;

public class Practice {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String command;

        StringBuffer sb = new StringBuffer("Do you like pineapple?");

        while(true){
            System.out.println(sb);
            System.out.print("명령 : ");
            command = scanner.next();
            if(command.equals("그만")) {
                System.out.println("종료합니다");
                break;
            }

            StringTokenizer split = new StringTokenizer(command, "!");
            String original = split.nextToken();
            String change = split.nextToken();

            int start = sb.indexOf(original);
            int end = start + original.length();
            if(start == -1){
                System.out.println("찾을 수 없습니다!");
                continue;
            }
            sb.replace(start, end, change);
        }
        scanner.close();
    }
}

Do you like pineapple?
명령 : pineapple?!파인애플?
Do you like 파인애플?
명령 : you!당신은
Do 당신은 like 파인애플?
명령 : 그만
종료합니다


문자열을 입력받아 프로그램을 실행하고 싶은 경우

StringBuffer sb = new StringBuffer("Do you like pineapple?");

위의 코드를 아래처럼 바꾸면 된다.

StringBuffer sb = new StringBuffer(scanner.nextLine());
  • indexOf() 함수는 문자열에서 해당 문자의 위치를 리턴한다. 문자를 찾지 못한 경우 -1을 리턴한다.
  • lastIndexOf() 함수는 맨 뒤부터 문자를 찾아 위치를 리턴한다.
    f
profile
파인애플 좋아하세요?

0개의 댓글