커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
2주차 과제 Iterator 위치
Java 문법 종합반 v0
2주차
북마크
박*현
댓글
1
추천
0
조회수
16
조회수
16
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


질문 내용

1주차 레시피 리팩토링 하는 과제 하고 있습니다.

set 구현 중 아래 문장 위치에 따라 정상 작동하고 오류가 발생합니다.(위치 //1,//2)

1번 주석을 활성화하면 자료 다 입력 후 끝에서 오류가 발생하면서 입력된 값을 출력해주지 않고, 2번은 정상적으로 종료됩니다.

 Iterator<String> Iterator = SetStr.iterator;



전체 화면 캡처

보고 계신 화면 전체를 캡처해 주시면, 튜터님들이 빠르게 상황을 이해할 수 있어요.


스파르타 즉문즉답



작성한 코드 및 에러 메세지

오류 발생 시, 작성한 코드 전체와 에러 메시지를 첨부해 주세요.

import java.util.*;

public class Week2Test {
    public static void main(String[] args) {
        //        자료구조 요리 레시피 메모장 만들기 (1주차 자료 리팩토링)
        //                입력값
        //        저장할 자료구조명을 입력합니다. (List / Set / Map) v
        //        내가 좋아하는 요리 제목을 먼저 입력합니다. v
        //        이어서 내가 좋아하는 요리 레시피를 한문장씩 입력합니다. v
        //                입력을 마쳤으면 마지막에 “끝” 문자를 입력합니다. v
        //        출력값
        //        입력이 종료되면 저장한 자료구조 이름과 요리 제목을 괄호로 감싸서 먼저 출력 해줍니다.
        //        이어서, 입력한 모든 문장앞에 번호를 붙여서 입력 순서에 맞게 모두 출력 해줍니다.

        Scanner scanner = new Scanner(System.in); //화면으로 입력 설정

        boolean EndSign = false; //끝 입력시 종료값으로 사용
        int num = 1; //레시피 앞 순번 변수
        String title; //요리 제목

        System.out.println("사용 할 자료구조를 입력해주세요");
        String col = scanner.nextLine(); //collection 입력
//        System.out.println("요리 제목을 입력해주세요.");
//        String title = scanner.nextLine(); //요리 제목 입력

        switch (col) {
            case "list":
                ArrayList<String> ListStr = new ArrayList<String>(); //list 타입 사용
                System.out.println("요리 제목을 입력해주세요.");
                title = scanner.nextLine();
                ListStr.add("[ List로 저장된 " + title + " ]");
                System.out.println("레시피를 한 줄 씩 입력해주세요.");

                while (!EndSign) {
                    String RecipeList = scanner.nextLine();
                    if (RecipeList.equals("끝")) {
                        EndSign = true;
                        break;
                    } else {
                        ListStr.add(num + ". " + RecipeList);
                        num++;
                    }
                }
                for (int print = 0; print < ListStr.size(); print++) { //끝 입력된뒤 입력된 사용한 collection, 제목, 내용 한줄씩 출력
                    System.out.println(ListStr.get(print));
                }
                break;
            case "set":
//                Set<String> SetStr = new HashSet<String>(); //LinkedHashSet은 순서를 보장하고 HashSet은 순서를 보장하지 않음...
                LinkedHashSet<String> SetStr = new LinkedHashSet<String>();
//1.                Iterator<String> Iterator = SetStr.iterator();

                System.out.println("요리 제목을 입력해주세요.");
                title = scanner.nextLine();
                SetStr.add("[ Set으로 저장된 " + title + " ]");

                System.out.println("레시피를 한 줄 씩 입력해주세요.");

                while (!EndSign) {
                    String RecipeSet = scanner.nextLine();
                    if (RecipeSet.equals("끝")) {
                        EndSign = true;
                        break;
                    } else {
                        SetStr.add(num + ". " + RecipeSet);
                        num++;
                    }
                }
//2.               Iterator<String> Iterator = SetStr.iterator();
                for (int print = 0; print < SetStr.size(); print++) {
                    System.out.println(Iterator.next());
                }
                break;
//            case "map":
//                Map<Integer, String> Map = new HashMap<Integer, String>(); //map 타입 사용
//                System.out.println("요리 제목을 입력해주세요.");
//                title = scanner.nextLine(); //요리 제목 입력
//                Map.add("[ Map으로 저장된 " + title + " ]");
            default:
                System.out.println("사용 할 수 없는 자료구조 입니다.");
        }
    }
}

[에러메세지]

Exception in thread "main" java.util.ConcurrentModificationException

at java.base/java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:756)

at java.base/java.util.LinkedHashMap$LinkedKeyIterator.next(LinkedHashMap.java:778)

at Week2Test.main(Week2Test.java:69)



취소
 공유
취소
댓글 0
댓글 알림
나의얼굴