프로그래밍 언어 복습/JAVA

#46 JAVA 동물 10마리 랜덤으로 받아 우리안에 넣기 ! 문제

사재원 교수 2022. 5. 27. 22:04

정답공개 ! 

package NewProject;

import java.util.Random;

//동물 클래스
class Animal{
	Random r = new Random();
	String color;
	String[] colorlist = {"빨간색","주황색","노란색","초록색","파란색","남색","보라색"};
	public void print() {
		System.out.println("나는 동물이다.");
	}
}

//강아지 클래스
class Dog extends Animal{
	Dog(){
		color = colorlist[r.nextInt(colorlist.length)];
	}

	@Override
	public void print() {
		System.out.println("나는 " + color + " 강아지 입니다.");
	}
}

//고양이 클래스
class Cat extends Animal{
	Cat(){
		color = colorlist[r.nextInt(colorlist.length)];
	}

	@Override
	public void print() {
		System.out.println("나는 " + color + " 고양이 입니다.");
	}
}

//미어캣 클래스
class Miocat extends Animal{
	Miocat(){
		color = colorlist[r.nextInt(colorlist.length)];
	}

	@Override
	public void print() {
		System.out.println("나는 " + color + " 미어캣 입니다.");
	}
}

//판다 클래스
class Panda extends Animal{
	Panda(){
		color = colorlist[r.nextInt(colorlist.length)];
	}

	@Override
	public void print() {
		System.out.println("나는 " + color + " 판다 입니다.");
	}
}
//동물을 우리로 데려오기
class Pickup{
	Random r = new Random();
	Animal[] am = new Animal[10]; //동물 10마리 데려오기
	Pickup() {
		for(int i=0;i<am.length;i++) {
			am[i] = new Animal(); //10마리의 동물 객체 생성 , 10마리의 동물을 받아올 객체 틀을 만듬
		}
	}

	public void choice() {

		for(int i = 0;i<am.length;i++) {
			int name = r.nextInt(4); //0~3 랜덤 동물
			if(name == 0) { //강아지
				Dog d = new Dog();
				am[i] = d;
			}else if(name == 1) { //고양이
				Cat c = new Cat();
				am[i] = c;
			}else if(name == 2) { //미어캣
				Miocat m = new Miocat();
				am[i] = m;
			}else if(name == 3) { //판다
				Panda p = new Panda();
				am[i] = p;
			}
		}
		
		for(int i=0;i<am.length;i++) {
			am[i].print();
		}
	}
	

}


public class Start {
	public static void main(String[] args) {

		Pickup p = new Pickup();
		p.choice();


	}
}

- 부모클래스인 Aniaml 클래스를 기본적으로 만들어주어 틀을 형성했고 강아지 / 고양이 / 미어캣 / 판다 클래스가 각각 자식 클래스로써 Animal 클래스를 상속받아서 색깔은 기본생성자로 랜덤으로 배정되었다.

- 부모클래스의 print() 메소드는 오버라이딩하여 자신의 동물종류와 색깔을 출력하게끔 하였다.

- 동물 10마리를 우리에 넣어야하므로 Pickup 클래스를 만들어 Animal 클래스를 10크기의 배열로 만들었고 

- 랜덤을 돌려 0이 나올경우 강아지가 Animal 배열에 들어가고 1이 나올 경우 고양이 2일 경우 미어캣 3일 경우 판다

- for문을 통해 10번을 돌려서 랜덤으로 동물들이 Animal배열에 들어가면 for문이 끝나고 또 다시 for문을 통해 print()메소드를 통해 동물 10마리가 자신들이 누구인지 출력하게 된다.

 

 

감사합니다.