spring_2기[사전캠프]

Spring 2기 8,9일차 [사전캠프]

minwoo95 2025. 11. 21. 20:29

동물관리 프로그램 만들기 과제 [미완성]

package Task.animalcaresysteom.lavel1;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int age1=0;
        String kind="";
        int number6=0;

        System.out.println("=== 동물원 관리 시스템 ===");
        System.out.println("1. 동물 등록\n2. 동물 목록 보기\n3. 동물과 놀기\n4. 먹이주기\n5. 동물 상태 확인\n6. 울음소리 듣기\n7. 종료");

        Scanner sc = new Scanner(System.in);
        Zoo zoo = new Zoo();//객체 생성

        while(true){
            System.out.print("메뉴를 선택하세요:");
            String input1 = sc.nextLine();//사용자 입력

            boolean condtion1 = true;
            int dotCount1 = 0;

            if (input1.length() == 0) { // 빈 문자열 검사
                condtion1 = false;
            } else {
                for (int i = 0; i < input1.length(); i++) {
                    char c = input1.charAt(i);

                    if (c >= '1' && c <= '7') {
                        continue; // 숫자는 OK
                    } else if (c == '.') {
                        dotCount1++;
                        if (dotCount1 > 0) { // 소수점이 1개 이상이면 오류 출력
                            System.out.println("0과 문자 특수문자는 입력이 불가합니다");
                            System.out.println("1부터 7까지 메뉴 번호만 입력하세요");
                            break;
                        }
                    } else if (c == '-') {
                        if (i != input1.length()) { // '-'가 있다면 오류 출력
                            System.out.println("0과 문자 특수문자는 입력이 불가합니다");
                            System.out.println("1부터 7까지 메뉴 번호만 입력하세요");
                            break;
                        }
                    } else {
                        System.out.println("0과 문자 특수문자는 입력이 불가합니다");
                        System.out.println("1부터 7까지 메뉴 번호만 입력하세요");
                        break;
                    }
                }
            }



            if (input1.equals("1")) {//1.동물등록
                System.out.print("동물의 이름을 입력하세요:");
                String name = sc.nextLine();//사용자 입력

                while(true){
                    System.out.print("동물 나이를 입력하세요:");
                    String input3 = sc.nextLine();//사용자 입력
                    boolean condtion = true;
                    int dotCount = 0;

                    if (input3.length() == 0) { // 빈 문자열 검사
                        condtion = false;
                    } else {
                        for (int i = 0; i < input3.length(); i++) {
                            char c = input3.charAt(i);

                            if (c >= '0' && c <= '9') {
                                continue; // 숫자는 OK
                            } else if (c == '.') {
                                dotCount++;
                                if (dotCount > 0) { // 소수점이 1개 이상이면 오류 출력
                                    condtion = false;
                                    break;
                                }
                            } else if (c == '-') {
                                if (i != input3.length()) { // '-'가 있다면 오류 출력
                                    condtion = false;
                                    break;
                                }
                            } else {
                                condtion = false; // 숫자, '.', '-' 외 문자 존재 오류출력
                                break;
                            }
                        }
                    }

                    if (condtion) {
                        int number = Integer.parseInt(input3);//모든 유효성 검사를 통과한 입력값을 int형을 변환
                        age1=number;//변환된 값을 저장
                        break;
                    } else {
                        System.out.println("0과 문자 특수문자는 입력이 불가합니다");
                        System.out.println("0을 초과하는 정수로 입력 하세요");
                    }


                }


                while(true){
                    System.out.print("동물의 종류를 선택하세요(1.강아지 2.고양이):");
                    String input4 = sc.nextLine();//사용자 입력
                    if (input4.equals("1")) {
                        kind="강아지";//변환된 값을 저장
                        break;
                    }else if (input4.equals("2")) {
                        kind="고양이";//변환된 값을 저장
                        break;
                    }else {
                        System.out.println("0과 문자 특수문자는 입력이 불가합니다");
                        System.out.println("1과 2 둘중에 하나만 입력하세요");
                    }



                }
                zoo.addAnimal(name,age1,kind);//호출





            }else if (input1.equals("2")) {//2.동물 목록 보기
                System.out.println("=======등록된 동물의 목록입니다=======");
                zoo.showAnimals();

            }else if (input1.equals("3")) {//3.동물과 놀기

            }else if (input1.equals("4")) {//4.먹이주기

            }else if (input1.equals("5")) {//5.동물 상태 확인

            }else if (input1.equals("6")) {//6.울음소리 듣기

                while (true) {
                    if (zoo.getAnimalCount() == 0) {
                        System.out.println("등록된 동물이 없습니다!");
                        break;
                    }

                    System.out.println("울음소리를 들을 동물을 선택하세요:");
                    zoo.showAnimals();
                    System.out.print("선택: ");
                    String input5 = sc.nextLine();

                    boolean isValid = true;

                    // 빈 입력 체크
                    if (input5.length() == 0) {
                        isValid = false;
                    } else {
                        // 숫자 여부 체크 (문자 길이만큼 탐색)
                        for (int i = 0; i < input5.length(); i++) {
                            char c = input5.charAt(i);
                            if (!(c >= '0' && c <= '9')) { // 숫자가 아니면
                                isValid = false;
                                break;
                            }
                        }
                    }

                    if (!isValid) {
                        System.out.println("숫자만 입력하세요!");
                        continue;
                    }

                    number6 = Integer.parseInt(input5);

                    // 범위 체크
                    if (number6 < 1 || number6 > zoo.getAnimalCount()) {
                        System.out.println("등록된 동물 번호만 입력하세요!");
                        System.out.println("현재 동물 수: " + zoo.getAnimalCount() + "마리");
                        continue;
                    }

                    // 여기까지 통과 → 울음소리 출력 + 반복 종료
                    zoo.playSound(number6 - 1);
                    break;
                }


            }else if (input1.equals("7")) {//7.종료
                System.out.println("=== 프로그램을 종료합니다. ===");
                System.exit(0);//프로그램 종료
            }

        }





    }
}
package Task.animalcaresysteom.lavel1;
import java.util.ArrayList;

public class Zoo {
    /*
        -List~Animal~ animals
        +addAnimal(Animal a)
        +showAllAnimals()
        +feedAnimal(int index)
        +playWithAnimal(int index)
        +playSound(int index)*/
    private ArrayList<Animal> animals = new ArrayList<>();

    public void addAnimal(String name, int age, String kind) {
        Animal newAnimal = new Animal(name, age, kind);
        animals.add(newAnimal);
        System.out.println(name+"("+kind+", "+age+")"+"가 등록되었습니다.");
    }
    public void showAnimals() {
        if(animals.isEmpty()) {
            System.out.println("등록된 동물이 없습니다.");
            return;
        }

        for(int i = 0; i < animals.size(); i++) {
            Animal a = animals.get(i);
            System.out.println((i + 1) + ". " + a.getName() + " (" + a.getKind() + ", " + a.getAge() + "살)");
        }
    }
    public int getAnimalCount() {
        return animals.size();
    }
    public void playSound(int index) {
        Animal a = animals.get(index);
        System.out.println(a.getName() + ":" + a.getSound());
    }

}
package Task.animalcaresysteom.lavel1;

public class Animal {
    private String name;
    private int age;
    private String kind;
    int hunger = 0;
    int happiness = 0;
    String sound;

    //생성자
    public Animal(String name, int age, String kind) {
        this.name = name;
        this.age = age;
        this.kind = kind;
        if(kind == "강아지"){
            this.sound = "멍멍!";
        }else if(kind == "고양이"){
            this.sound = "야옹!";
        }
    }
    // getter
    public String getName() { return name; }
    public int getAge() { return age; }
    public String getKind() { return kind; }

    @Override
    public String toString() {
        return "Animal [name=" + name + ", age=" + age + ", kind=" + kind + "]";
    }
    public String getSound() {
        return sound;
    }





}

'spring_2기[사전캠프]' 카테고리의 다른 글

내배캠 3일차(리마인드)  (0) 2025.11.26
[과제]동물 관리 시스템  (0) 2025.11.26
Spring 2기 7일차 [사전캠프]  (0) 2025.11.19
Spring 2기 6일차 [사전캠프]  (0) 2025.11.18
Spring 2기 5일차 [사전캠프]  (0) 2025.11.17