https://github.com/MinWoo1995/-/tree/main
main
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.동물과 놀기
System.out.println("=======등록된 동물의 목록입니다=======");
zoo.showAnimals();
while (true) {
if (zoo.getAnimalCount() == 0) {
System.out.println("등록된 동물이 없습니다!");
break;
}
System.out.println("놀고자 하는 동물의 번호를 입력하세요:");
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.playAnimal(number6 - 1);
break;
}
}else if (input1.equals("4")) {//4.먹이주기
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.eatAnimal(number6 - 1);
break;
}
}else if (input1.equals("5")) {//5.동물 상태 확인
while (true) {
if (zoo.getAnimalCount() == 0) {
System.out.println("등록된 동물이 없습니다!");
break;
}
System.out.println("동물의 상태를 확인하세요");
zoo.showAnimalsCondition();
break;
}
}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);//프로그램 종료
}
}
}
}
zoo클래스
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 void showAnimalsCondition() {
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() + "살)"+"포만감: "+a.gethappiness()+"행복감: "+a.gethunger());
}
}
public void playAnimal(int index) {
// 유효한 인덱스인지 확인
if (index < 0 || index >= animals.size()) {
System.out.println("잘못된 번호입니다. 다시 선택해주세요!");
return;
}
// 선택된 동물 가져오기
Animal animal = animals.get(index);
// 놀아주기 출력
System.out.println(animal.getName() + "와(과) 즐겁게 놀아주었습니다!");
// 행복감 10 증가
animal.increaseHappiness(10);
// 현재 행복감 출력
System.out.println(animal.getName() + "의 현재 행복감: " + animal.gethappiness());
}
public void eatAnimal(int index) {
// 유효한 인덱스인지 확인
if (index < 0 || index >= animals.size()) {
System.out.println("잘못된 번호입니다. 다시 선택해주세요!");
return;
}
// 선택된 동물 가져오기
Animal animal = animals.get(index);
// 먹이를 주었다 출력
System.out.println(animal.getName() + "에게 먹이를 주었습니다.!");
// 포만감 10 증가
animal.increasehunger(10);
// 현재 포만감 출력
System.out.println(animal.getName() + "의 현재 포만감: " + animal.gethunger());
}
public int getAnimalCount() {
return animals.size();
}
public void playSound(int index) {
Animal a = animals.get(index);
System.out.println(a.getName() + ":" + a.getSound());
}
public void playSound(){
}
}
Animal클래스
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 = "야옹!";
}
}
public void increaseHappiness(int amount) {
this.happiness += amount;
}
public void increasehunger(int amount) {
this.hunger += amount;
}
// getter
public String getName() { return name; }
public int getAge() { return age; }
public String getKind() { return kind; }
public int gethappiness() { return happiness; }
public int gethunger() { return hunger; }
@Override
public String toString() {
return "Animal [name=" + name + ", age=" + age + ", kind=" + kind + "]";
}
public String getSound() {
return sound;
}
}
[문제]클래스와 객체 개념의 혼돈으로 각클래스를 오가며 작성간 오류가 발생
[해결]개념정리와 각 클래스별 명칭과 코딩 정리와 주석처리로 문제 해결
동물 관리 시스템(동물 관리 시스템) – 레벨 1
OOP(개념을 바탕으로 동물을 등록하고, 울음 소리를 듣고, 놀아줌으로써 행복감을 높이는 기능을 제공하는 콘솔 기반 프로그램입니다.
😀 프로젝트 개요
이 프로그램은 Java로 제작된 기본 관리 시스템으로 다음 기능을 제공합니다.
등록된 이름(이름 / 나이 / 종류)
등록된 목록 조회
특정 동물의 울음소리 듣기
특정 동물과 놀아주기 → 행복감 10 증가
사용자 입력 기반 메뉴 시스템
OOP의 생성자, 패치 설계 및 ArrayList를 활용해 형태를 구현했습니다.
*프로젝트 구조 src/ ├── Main.java // 메인 실행 파일 ├── Zoo.java // 동물리스트 관리, CRUD 및 놀이 기능 제공 └── Animal.java // 동물 집단 존재(이름, 나이, 종류, 행복감 등)
주요 기능 설명
- 등록된 제품
사용자가 입력한 이름, 나이, 종류(강아지/고양이)에 따라 동물을 생성한 후 동물원에 저장합니다.
- 동물 목록 조회
사용자가 등록된 모든 동물의 번호와 함께 출력됩니다.
- 울음소리 듣는데
동물의 종류에 따라 자동으로 지정된 울음소리를 출력합니다.
일종의 울음소리 강아지 멍멍! 고양이야옹! 4. 놀아주기 (playAnimal)
선택한 행복의 동물감이 10 증가하며, 울음소리와 함께 행복감을 느끼게 됩니다.
🛠 핵심 코드 Animal.java public class Animal { private String name; private int age; private String kind; private int happiness = 0; private String sound;
public Animal(String name, int age, String kind) {
this.name = name;
this.age = age;
this.kind = kind;
if(kind.equals("강아지")) this.sound = "멍멍!";
else if(kind.equals("고양이")) this.sound = "야옹!";
}
public void increaseHappiness(int amount) {
this.happiness += amount;
}
public int getHappiness() { return happiness; }
public String getSound() { return sound; }
public String getName() { return name; }
}
Zoo.java (playAnimal 핵심) public void playAnimal(int index) { if (index < 0 || index >= Animals.size()) { System.out.println("잘 못된 번호입니다."); 반품; }
Animal animal = animals.get(index);
System.out.println(animal.getName() + "와(과) 즐겁게 놀아주었습니다!");
System.out.println("울음소리: " + animal.getSound());
animal.increaseHappiness(10);
System.out.println("현재 행복감: " + animal.getHappiness());
}
▶ 연습 예시
- 등록된 제품
- 동물 목록 보기
- 울음소리 듣는데
- 놀아주기
- 종료
선택: 1 입력: 뽀삐 나이 입력: 3 종류 입력(강아지/고양이): 강아지 등록 완료!
4번 선택 → 놀아주기 활동 동물 번호 선택: 1 뽀삐와(과) 놀아요! 울음소리: 멍멍! 현재 행복감 : 10
💡 개선 가능성 (선택 사항)
행복감/배고결정 부분을 추가로 제한
classDiagram 클래스 Animal { - 문자열 이름 - int 나이 - 문자열 종류 - int 행복 - 문자열 소리 + Animal(문자열 이름, int 나이, 문자열 종류) + 문자열 getName() + int getAge() + 문자열 getKind() + int getHappiness() + 문자열 getSound() + void increaseHappiness(int amount) + 문자열 toString() }
class Zoo {
- List~Animal~ animals
+ void addAnimal(Animal animal)
+ void showAnimals()
+ void playAnimal(int index)
+ void playSound(int index)
+ int getAnimalCount()
}
class Main {
+ main(String[] args)
}
Main --> Zoo
Zoo --> Animal
'spring_2기[사전캠프]' 카테고리의 다른 글
| 내배캠 2일차(리마인드) (0) | 2025.11.26 |
|---|---|
| 내배캠 3일차(리마인드) (0) | 2025.11.26 |
| Spring 2기 8,9일차 [사전캠프] (0) | 2025.11.21 |
| Spring 2기 7일차 [사전캠프] (0) | 2025.11.19 |
| Spring 2기 6일차 [사전캠프] (0) | 2025.11.18 |