프로그래밍 언어 복습/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마리가 자신들이 누구인지 출력하게 된다.
감사합니다.