나의 수업일지

숙제)아이디 중복 체크 저장용

2023. 3. 12. 20:32
  • 아이디_중복 체크 _ 저장용
	>내가 만든 아이디 중복 체크
    
	public static void overlapCheck(List<UserDTO> list ,UserDTO userDTO) {
        for (UserDTO s : list) {
            while (true) {
                if (s.getEmail().equals(userDTO.getEmail())) {
                    System.out.print("중복된 아이디입니다\n다시입력 >");
                    userDTO.setEmail(sc.next());
                } else if (!userDTO.getEmail().equals(s.getEmail())) {
                    break;
                }
            }
        }
    }
    > 실행은 잘 되지만 선생님이 원하는 답은 아님
    > 가장 큰 문제는 뭐가 문제인지 모르겠음
    > 따로 알아본 결과 나는 저기에 사용된 userDTO가 한객체에서 수정되며 반복하는줄 알았으나
    > 반복하며 새로 입력받을때 마다 새로운 객체가 만들어진다는 답변을 받았음
    > 그럼 메모리의 사용량이 늘고 도메인을 넣지 않았기 때문에 같은 아이디에 다른 도매인을 사용하는 경우
    > 가입이 된다는데 하여튼 문제가 있다는 사실을 알았음 이는 더 배워가며 느껴야할 부분인듯하다
    > 메모리 문제는 Util을 싱글톤으로 만들어보라는 답변도 받음
    > 잘이해안됨
    
    > 선생님이 만든 아이디 중복 체크만들기

    public String overlapCheck(List<UserDTO> list, String str) {
        while(true) {
            System.out.print(str+"> ");
            String email = sc.next();
            boolean find = false;
            for(UserDTO u : list) {
                if(u.getEmail().equals(email+"@"+UserDTO.getDomain())) {
                    System.out.println("중복된 "+str);
                    find = true;
                    break;
                }
            }
            if(find) {
                continue;
            }
            return email;
        }
    }

    > 다른 분이 만든 아이디 중복체크
    > 매우 어려움 나중에 이해가 가능하면 풀이를 적자
    
        public String overlapCheck() {
            while(true) {
                List<UserDTO> list = repository.findAll();
                System.out.print("이메일> ");
                String id = sc.next();
                String domain = UserDTO.getDomain();
                boolean ok = false;            
                String idOk = null;

                if(list.size() == 0) {
                    return id;
                } else {
                    for(UserDTO u : list) {
                        // @를 기준으로 문자열을 추출할 것이다.
                        String selectEmail = u.getEmail();

                        // 먼저 @ 의 인덱스를 찾는다 - 인덱스 값: 5
                        int idx = selectEmail.indexOf("@"); 

                        // @ 앞부분을 추출
                        // substring은 첫번째 지정한 인덱스는 포함하지 않는다.
                        // 아래의 경우는 첫번째 문자열인 a 부터 추출된다.
                        String selectid = selectEmail.substring(0, idx);

                        if(selectid.equals(id)) {
                            idOk = id;
                            break;
                        } 

                    }
                    if(idOk != null) {
                        for(UserDTO u : list) {
                            // @를 기준으로 문자열을 추출할 것이다.
                            String selectEmail = u.getEmail();

                            // 먼저 @ 의 인덱스를 찾는다 - 인덱스 값: 5
                            int idx = selectEmail.indexOf("@");

                            // @ 앞부분을 추출
                            // substring은 첫번째 지정한 인덱스는 포함하지 않는다.
                            // 아래의 경우는 첫번째 문자열인 a 부터 추출된다.
                            String selectid = selectEmail.substring(0, idx);

                            // 뒷부분을 추출
                            // 아래 substring은 @ 바로 뒷부분인 n부터 추출된다.
                            String selectDomain = selectEmail.substring(idx+1);

                            if(selectid.equals(idOk) && selectDomain.equals(domain)) {
                                System.out.println("동일한 이메일이 있습니다. 다시입력");
                                ok = true;
                                break;
                            } else {
                                ok = false;
                            }
                        }
                    } else {
                        ok = false;
                    }
                }
                if(!ok) {
                    return id;
                }

            }
        }

'나의 수업일지' 카테고리의 다른 글

인천 일보 아카데미 14일차 git_github ?  (0) 2023.03.13
인천 일보 아카데미 13일차 do_while / try_catch_finally / 다형성  (0) 2023.03.12
인천 일보 아카데미 12일차_2 만들며 익히기 (반복학습)  (0) 2023.03.10
인천 일보 아카데미 12일차_1 만들며 익히기 (반복학습)  (0) 2023.03.09
인천 일보 아카데미 11일차 4개의 클래스를 사용하여 만들어보기  (0) 2023.03.08
'나의 수업일지' 카테고리의 다른 글
  • 인천 일보 아카데미 14일차 git_github ?
  • 인천 일보 아카데미 13일차 do_while / try_catch_finally / 다형성
  • 인천 일보 아카데미 12일차_2 만들며 익히기 (반복학습)
  • 인천 일보 아카데미 12일차_1 만들며 익히기 (반복학습)
GUPING
GUPING
안녕하세요 개발자를 꿈꾸는 GUPING 입니다
GUPING
개발자를 꿈꾸는 GUPING
GUPING
전체
오늘
어제
  • 분류 전체보기 (89)
    • 나의 수업일지 (88)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 여러사진프리뷰
  • 다중프리뷰
  • 페이징Controller
  • pagingAjax
  • 파일이름가져오기
  • 로그인 경고문
  • 버튼2가지이벤트
  • 네이버
  • 버튼 이벤트 변경
  • 로그인form
  • 지식인
  • realative
  • 수정
  • 검색
  • 검색결과페이징
  • 개힘드렁
  • naver
  • PAGE
  • Ajax
  • 클래스 이름 변경
  • 버튼 이벤트 함수 변경
  • Paging
  • 파일이름(다중)
  • 삭제
  • 로그인게시판
  • 페이징
  • 틀만들기
  • 업로드파일이름출력
  • 파일 이름 가져오기
  • 답변 채택

최근 댓글

최근 글

hELLO · Designed By 정상우.
GUPING
숙제)아이디 중복 체크 저장용
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.