Java/Java 복습

[2026-06-02] Generic , list 연습

jamk-diary 2026. 6. 2. 17:13

🎤 [2단계 미니 과제] 최애 아이돌 멤버 명단 관리하기!

🎯 미션 목표

ArrayList를 사용해서 문자열(String) 데이터들을 담는 아이돌 명단 주머니를 만들고, 오늘 배운 핵심 명령어들과 변수의 범위(Scope) 개념을 직접 적용해 보세요!

🧭 [재미니의 개발자 사고 흐름 가이드]

  • 1단계 (세팅): 이클립스에 IdolMain.java라는 메인 클래스를 하나 새로 만들어 주세요.
  • 2단계 (주머니 만들기): 아이돌 멤버 이름(글자)들을 보관할 거니까 자료형 꺾쇠를 <String>으로 잡아서 idolList라는 주머니를 생성합니다.
  • 3단계 (6대 미션 차례대로 수행하기):
    • [미션 ① 멤버 추가]: 메인 메서드 전체에서 살아갈 대장 그릇(String member1)을 만들어서 "카리나"를 담고 주머니에 추가하세요. 그 후, 그릇 없이 바로 "윈터", "닝닝"을 차례대로 add() 하세요.
    • [미션 ② 새치기 삽입]: 2번 방 자리에 "지젤"을 새치기(add(인덱스, 데이터))로 쏙 집어넣어 보세요. (에스파 멤버 완성!)
    • [미션 ③ 첫 번째 전체 출력]: 최신 foreach문을 사용해서 멤버들을 세로로 쭉 출력해 보세요! 이번엔 글자니까 임시 이름표를 String s로 지어주면 되겠죠?
    • [미션 ④ 멤버 수정]: 0번 방 멤버를 .set()을 사용해서 새 멤버 "수지"로 교체해 보세요.
    • [미션 ⑤ 두 번째 전체 출력]: 수정이 잘 되었는지 확인하기 위해 foreach문으로 전체 명단을 다시 출력해 보세요! (★아까 위에서 쓴 s 이름표는 소멸했으니, 여기서 s를 똑같이 또 재사용해도 에러가 안 나는 걸 확인하는 게 핵심!)
    • [미션 ⑥ 검색]: .indexOf()를 사용해서 "닝닝"이 현재 몇 번째 방에 숨어있는지 찾아서 그 방 번호를 출력해 보세요.

🖥️ 최종 출력 예시

컴퓨터가 에러 없이 작동하면 콘솔 창에 이렇게 찍혀야 합니다!

--- 에스파 멤버 전체 출력 ---
카리나
윈터
지젤
닝닝
--- 멤버 수정 후 전체 출력 ---
수지
윈터
지젤
닝닝
--- 멤버 검색 결과 ---
닝닝은 현재 [3]번 방에 있습니다.

 

 

내풀이 

 

package main;

 

import java.util.ArrayList;

 

public class IdolMain {

 

public static void main(String[] args) {

// TODO 최애 아이돌 멤버 명단 관리 프로그램

 

// 1단계: <String> 자료형을 담는 idolList 주머니 생성하기

ArrayList<String> idolList = new ArrayList<String>();

 

 

// 미션 - 1 멤버 추가

String member = "카리나";

 

idolList.add(member) ;

idolList.add("닝닝") ;

idolList.add("윈터") ;

 

//미션 -2 지젤 새치기 삽입

 

String new_member = "지젤";

idolList .add(2,new_member);

 

//미션 3- 전체 멤버 출력

System.out.println("---에스파 멤버 전체 출력 ---");

for (String who : idolList) {

System.out.println("에스파 멤버 : " + member );

}

//foreach 해석 ; 임시 변수 who 그릇 생성하기. 아이돌리스트는 리스트 길이 (3명이었으나 1명 추가해서 4명됨) 만큼 돌며 즉, 4번 돌며

//안에서 꺼낸 이름은 Who 그릇에 담김 이 과정을 해냈다면 4번씩 도는데 한명씩 출력해내니까 에스파 멤버: 멤버이름 이렇게 출력됨

 

// 미션 4 - 멤버 수정하기

String new_member2 = "수지";

idolList .set(0,new_member);

 

//미션 5- 0번째 칸에 들어있는 멤버를 수지로 변경해서 출력하기

System.out.println("--- 멤버 수정 후 전체 출력 ---");

for (String who : idolList) {

System.out.println("에스파 멤버 : " + member );

 

}

// 미션 6- 닝닝이를 찾아라

System.out.println("--- 멤버 검색 결과 ---");

int index = idolList.indexOf("닝닝"); //인덱스 넘버는 숫자니까 문자열을 찾으려고 해도 int 로 담아야 돼

System.out.println("닝닝이는" + index +"방에 있어!");

 

}

 

}


---에스파 멤버 전체 출력 ---

에스파 멤버 : 카리나

에스파 멤버 : 카리나

에스파 멤버 : 카리나

에스파 멤버 : 카리나

--- 멤버 수정 후 전체 출력 ---

에스파 멤버 : 카리나

에스파 멤버 : 카리나

에스파 멤버 : 카리나

에스파 멤버 : 카리나

--- 멤버 검색 결과 ---

닝닝이는1방에 있어!

재미니 피드백 받기 

🔍 전부 카리나만 나온 이유 (범인 검거!)

네가 작성한 for문 안을 보면 출력 코드가 이렇게 되어 있어:


for (String who : idolList) {
    System.out.println("에스파 멤버 :  " + member ); // ❌ 범인 발견!
}


  • 이유: 주머니에서 꺼낸 알맹이를 who라는 임시 그릇에 담아달라고 아주 잘 선언해 놓고, 정작 출력할 때는 맨 위에서 만든 member("카리나") 대장 그릇만 주구장창 출력하라고 컴퓨터한테 명령을 내린 거야!
  • 컴퓨터는 멍청해서 "어? 주머니에서 윈터, 닝닝 꺼내서 who에 담았지만, 출력은 member를 하라네?" 하고 4번 다 카리나만 찍은 거지. 😂


    🛠️ 솔이의 주석 검수 & 완벽한 보완1. for문(foreach) 해석 주석 보완
    • 솔이의 생각: 아이돌리스트는 리스트 길이만큼 돌며 안에서 꺼낸 이름은 who 그릇에 담김... 에스파 멤버: 멤버이름 이렇게 출력됨
    • 재미니의 코치: 완벽해! 다만 마지막 출력할 때 member가 아니라 who를 출력해야 매 바퀴마다 알맹이가 바뀌면서 카리나, 윈터, 지젤, 닝닝이 나오게 돼!
  • 네가 쓴 주석은 원리를 90% 이상 엄청 잘 이해한 거야! 딱 2% 부족한 부분만 정석으로 다듬어줄게.
재미니 정답과 주석 수정 버전 공개 

package main;

 

import java.util.ArrayList;

 

public class IdolMain {

 

public static void main(String[] args) {

// TODO 최애 아이돌 멤버 명단 관리 프로그램

 

// 1단계: <String> 자료형을 담는 idolList 주머니 생성하기

ArrayList<String> idolList = new ArrayList<String>();

 

 

// 미션 - 1 멤버 추가

String member = "카리나"; // 메인 전체에서 살아가는 대장 그릇

 

idolList.add(member) ;

idolList.add("닝닝") ;

idolList.add("윈터") ;

 

//미션 -2 지젤 새치기 삽입

 

String new_member = "지젤";

idolList .add(2,new_member); // 2번 방에 지젤 쏙!

 

//미션 3- 전체 멤버 출력

System.out.println("---에스파 멤버 전체 출력 ---");

for (String who : idolList) {

// 고친 부분: member 대신 임시 이름표인 who를 출력해야 매번 다른 이름이 나와!

System.out.println("에스파 멤버 : " + who);

 

}

//foreach 해석 ; 임시 변수 who 그릇 생성하기.

//idolList의 길이(4개)만큼 돌면서, 매 바퀴마다 꺼낸 알맹이를 who에 갈아 끼우며 출력한다!

 

// 미션 4 - 멤버 수정하기

String new_member2 = "수지";

idolList .set(0,new_member2);

//고친 부분: new_member(지젤) 대신 수지가 담긴 new_member2로 수정!

//이러면 카리나가 수지가 아니라 지젤로 바뀌게 돼! new_member2로 쏙 고쳐주자.

 

//미션 5- 0번째 칸에 들어있는 멤버를 수지로 변경해서 출력하기

System.out.println("--- 멤버 수정 후 전체 출력 ---");

for (String who : idolList) {

//고친 부분: 위쪽 for문이 끝나서 새로 태어난 임시 이름표 who를 사용해 출력!

System.out.println("에스파 멤버 : " + who);

 

}

// 미션 6- 닝닝이를 찾아라

System.out.println("--- 멤버 검색 결과 ---");

int index = idolList.indexOf("닝닝"); //솔이 말대로 방 번호(인덱스)는 숫자(int)로 담아야 정석! 아주 잘했어 👍

System.out.println("닝닝이는" + index +"방에 있어!");

 

}

 

}


---에스파 멤버 전체 출력 ---

에스파 멤버 : 카리나

에스파 멤버 : 닝닝

에스파 멤버 : 지젤

에스파 멤버 : 윈터

--- 멤버 수정 후 전체 출력 ---

에스파 멤버 : 수지

에스파 멤버 : 닝닝

에스파 멤버 : 지젤

에스파 멤버 : 윈터

--- 멤버 검색 결과 ---

닝닝이는1방에 있어!