코드 그라데이션

클래스배열 초기화(생성자에서) 예시 본문

Java/Mega

클래스배열 초기화(생성자에서) 예시

완벽한 장면 2023. 4. 9. 11:04
import java.util.Random;

class Player {
    int num; //레인번호
    String country; // 국가
    int m; // 전진거리

    Player(int num, String country) { // 생성자 => 레인번호, 국가
        this.num = num;
        this.country = country;

    }

    void runAndCheck(int num, Random r) { // 이동거리(전진) 실행 메서드 // 밖에서 레인번호만 알려주면 된다.
        if (num != this.num) { //돌발 레인번호와 내 레인번호가 일치하지 않으면ㅇ
            m += r.nextInt(10) + 1; // 전진(전진거리에 이동거리만큼을 누적)
        }
        System.out.println(country + "선수 이동거리는 " + m + "M 입니다.");
    }
}


class Game {
    String[] c = {"한국", "중국", "미국", "러시아"};
    Player[] p = new Player[4]; // 배열 각각의 객체를 생성

    public Game() {
        for (int i = 0; i < this.p.length; i++) {
            this.p[i] = new Player(i + 1, c[i]);
        }
    }
}

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Random r = new Random();
        Game game = new Game();

        Player[] p = game.p;

        while (p[0].m < 100 && p[1].m < 100 && p[2].m < 100 && p[3].m < 100) {
            int dol = r.nextInt(4) + 1;
            for (int i = 0; i < p.length; i++) {
                p[i].runAndCheck(dol, r);
            }
        }

        int max = -1;
        for (int i = 0; i < p.length; i++) { // 우승국 추출하기(최댓값 활용)
            if (max < p[i].m) {
                max = p[i].m;
            }
        }

        for (int i = 0; i < p.length; i++) { // 우승국 출력하기
            if (p[i].m == max) {
                System.out.println(p[i].country + "우승국입니다.");
                break;
            }
        }
    }

}
728x90

'Java > Mega' 카테고리의 다른 글

Day22. 상속 도입.(21은 문제)  (0) 2023.04.17
Day20. 오버로딩과 접근제한자  (1) 2023.04.17
Day16. HasTest 보충  (0) 2023.04.09
Day16 makeB() 자료 보충공부  (0) 2023.04.08
Day19. HasTest2(Has관계) 두 번째 예제 설명  (0) 2023.04.08
Comments