<aside> 💁♀️ 자료구조 요리 레시피 메모장 만들기
- 입력값
- 저장할 자료구조명을 입력합니다. (List / Set / Map)
- 내가 좋아하는 요리 제목을 먼저 입력합니다.
- 이어서 내가 좋아하는 요리 레시피를 한문장씩 입력합니다.
- 입력을 마쳤으면 마지막에 “끝” 문자를 입력합니다.
- 출력값
- 입력이 종료되면 저장한 자료구조 이름과 요리 제목을 괄호로 감싸서 먼저 출력 해줍니다.
- 이어서, 입력한 모든 문장앞에 번호를 붙여서 입력 순서에 맞게 모두 출력 해줍니다. </aside>
import java.util.*;
public class Main {
public static void main(String[] args) {
String cookName;
String collectionName;
String recipeText;
Scanner scanner = new Scanner(System.in);
System.out.println("저장할 컬렉션 타입을 입력");
collectionName = scanner.next();
switch (collectionName) {
case "List":
ArrayList<String> recipeList = new ArrayList<String>();
System.out.println("요리 이름 입력");
cookName = scanner.next();
System.out.println("레시피 입력");
while (true) {
{
recipeText = scanner.nextLine();
if (Objects.equals(recipeText, "끝")) {
break;
}
recipeList.add(recipeText);
}
}
System.out.println(collectionName + ":");
System.out.println("요리이름은 : " + cookName);
for (int i = 0; i < recipeList.size(); i++) {
System.out.println(i + 1 + ". " + recipeList.get(i));
//System.out.println(recipeList.toString());// 배열 확인용
}
System.out.println("끝");
break;
case "set":
Set<String> recipeSet = new LinkedHashSet<>();
System.out.println("요리 이름 입력");
cookName = scanner.next();
System.out.println("레시피 입력");
while (true) {
{
recipeText = scanner.nextLine();
if (Objects.equals(recipeText, "끝")) {
break;
}
recipeSet.add(recipeText);
}
}
System.out.println(collectionName + ":");
System.out.println("요리이름은 : " + cookName);
Iterator<String> iteratorSet = recipeSet.iterator();
int loopNumb=1;
while(iteratorSet.hasNext()) {
System.out.println(loopNumb+". " + iteratorSet.next());
//System.out.println(recipeSet.toString()); //배열 확인용
loopNumb++;
}
System.out.println("끝");
break;
case "map":
Map<Integer,String> recipeMap = new HashMap<Integer,String>();
System.out.println("요리 이름 입력");
cookName = scanner.next();
System.out.println("레시피 입력");
int mapIndex = 0;
while (true) {
recipeText = scanner.nextLine();
if (Objects.equals(recipeText, "끝")) {
mapIndex=0;
break;
}
recipeMap.put(mapIndex, recipeText);
mapIndex++;
}
System.out.println(collectionName + ":");
System.out.println("요리이름은 : " + cookName);
Iterator<Integer> keyIterator = recipeMap.keySet().iterator();
for (int i=0; i<recipeMap.size();i++){
System.out.println(mapIndex+1+ ". "+recipeMap.get(mapIndex));
mapIndex++;
}
System.out.println("끝");
break;
}
}
}
오늘의 시행착오
recipeText = scanner.nextLine();
if (Objects.equals(recipeText, "끝")) {
break;
여기를 작성할 때 recipeText = scanner.nextLine();을 사용하지 않고,
if문의 조건문에 scanner.nextLine()을 한번 더 작성했다.
그렇게하면 입력을 두번을 받아서 막상 배열에 값을 넣을 때 짝수번만 입력이 되어 거기서 두시간을 까먹었다..
튜터님께 여쭤봐서 다행히 코드를 수정할 수 있었다.
시행착오를 겪었던 코드를 지워버려서 남아있지 않아서 리뷰가 어렵다. 다음부턴 틀린 코드도 남겨두자.
결과값에서 문제가 있다.
컬렉션들의 인덱스가 한개씩 밀려서 저장된다. 아직 해결하지 못했다...
그래도 set, list, map 모두 사용하여 프로젝트를 진행해 보면서 각각 가지고 있는 특성들을 이해했다. 결과값 출력이라는 같은 수행을 하더라도 컬렉션마다 사용하는 메소드가 다르다는걸 배웠다.
이 프로젝트를 하면서 뼈저리게 느낀 것이 코드 재사용이다. 3가지 방식을 모두 작성했는데, 만약 인터페이스를 만들어놓고 내가 원하는 방식을 새로 정의해서 사용했다면 더빨리 프로젝트를 완성하지 않았을까? 생각해봤다.
'공부 > 예제 풀이' 카테고리의 다른 글
백준 1427번(실패) (0) | 2023.10.18 |
---|---|
백준 10814번 (실패) (0) | 2023.10.18 |
계산기 프로그래밍 (0) | 2023.10.17 |
개인 과제 01.(수정) (0) | 2023.10.12 |
1주차 숙제. (1) | 2023.10.12 |