본문 바로가기
Collection/ArrayList

ArrayList 예제(2)

by pms93 2022. 7. 25.
package arrayLists;

import java.util.ArrayList;
import java.util.Scanner;

public class Quiz2 {

	public static void main(String[] args) {

		// 회원 등록 : 이름(중복 허용), 전화번호(중복 허용), 이메일(중복허용 안됨)
		// 회원 확인 : 이메일로 검색하여 있으면 이름, 전화번호, 이메일 출력 / 없으면 없음 출력
		// 회원 삭제 : 이메일로 검색하여 있으면 이름, 전화번호, 이메일 삭제 / 없으면 없음 출력
		// 회원 수정 : 이메일로 검색하여 있으면 이름과 전화번호 수정 / 없으면 없음 출력
		Scanner sc = new Scanner(System.in);
		ArrayList<String> nameList = new ArrayList<>();
		ArrayList<String> phoneNumber = new ArrayList<>();
		ArrayList<String> eMail = new ArrayList<>();
		String nameTmp = "", phoneNumberTmp = "", eMailTmp = "";
		Long cvtPhoneNumber;
		int sel, delSel, fixSel;

		while (true) {
			while (true) {
				try {
					System.out.print("1. 회원 등록\n2. 회원 확인\n3. 회원 삭제\n4. 회원 수정\n5. 모든정보 출력\n6. 종료\n: ");
					sel = sc.nextInt();
				} catch (Exception e) {
					System.out.println("잘못된 형식의 입력입니다...");
					sc.nextLine();
					continue;
				}
				break;
			}

			switch (sel) {
			case 1:
				System.out.print("이름을 입력하세요\n: ");
				nameTmp = sc.next();

				while (true) {
					System.out.print("전화번호를 입력하세요\n: ");
					phoneNumberTmp = sc.next();
					try {
						cvtPhoneNumber = Long.parseLong(phoneNumberTmp);
					} catch (Exception e) {
						System.out.println("'-'를 제외한 숫자만 입력하세요...");
						sc.nextLine();
						continue;
					}
					break;
				}

				System.out.print("이메일을 입력하세요\n: ");
				eMailTmp = sc.next();
				
				if (eMail.contains(eMailTmp)) {
					System.out.println("이미 등록된 정보입니다.");
					break;
				}
				
				nameList.add(nameTmp);
				phoneNumber.add(phoneNumberTmp);
				eMail.add(eMailTmp);
				break;
				
			case 2:
				if (nameList.isEmpty()) {
					System.out.println("등록된 정보가 없습니다.");
					break;
				}
				
				System.out.print("검색하실 정보의 이메일을 입력하세요\n: ");
				eMailTmp = sc.next();
				
				int tmp = 0;
				if (eMail.contains(eMailTmp))
					tmp = eMail.indexOf(eMailTmp);
				else {
					System.out.println("입력하신 데이터는 존재하지 않습니다.");
					break;
				}
				
				System.out.printf("%d. 이름 : %s\t전화번호 : %s\t이메일 : %s\n", tmp + 1, nameList.get(tmp), phoneNumber.get(tmp), eMail.get(tmp));
				break;
				
			case 3:
				if (nameList.isEmpty()) {
					System.out.println("등록된 정보가 없습니다.");
					break;
				}
				
				for (int cnt = 0; cnt < nameList.size(); cnt++)
					System.out.printf("%d. 이름 : %s\t전화번호 : %s\t이메일 : %s\n", cnt + 1, nameList.get(cnt), phoneNumber.get(cnt), eMail.get(cnt));
				
				System.out.print("삭제하실 정보의 번호를 입력하세요\n: ");
				delSel = sc.nextInt();
				
				if (delSel >= nameList.size()) {
					System.out.println("해당 정보는 존재하지 않습니다");
					break;
				}
				
				nameList.remove(delSel - 1);
				phoneNumber.remove(delSel - 1);
				eMail.remove(delSel - 1);
				break;
				
			case 4:
				if (nameList.isEmpty()) {
					System.out.println("등록된 정보가 없습니다.");
					break;
				}
					
				for (int cnt = 0; cnt < nameList.size(); cnt++)
					System.out.printf("%d. 이름 : %s\t전화번호 : %s\t이메일 : %s\n", cnt + 1, nameList.get(cnt), phoneNumber.get(cnt), eMail.get(cnt));

				while (true) {
					try {
						System.out.print("수정하실 데이터의 번호를 입력하세요\n: ");
						fixSel = sc.nextInt();
					} catch (Exception e) {
						System.out.println("잘못된 형식의 입력입니다...");
						sc.nextLine();
						continue;
					}
					
					if (fixSel - 1 >= nameList.size()) {
						System.out.println("입력하신 데이터는 존재하지 않습니다. 다시 입력하세요.");
						sc.nextLine();
						continue;
					}
					break;
				}
				
				System.out.print("수정하실 이름을 입력하세요\n:");
				nameTmp = sc.next();
				nameList.set(fixSel - 1, nameTmp);
				
				while (true) {
					System.out.print("수정하실 전화번호를 입력하세요\n: ");
					phoneNumberTmp = sc.next();
					try {
						cvtPhoneNumber = Long.parseLong(phoneNumberTmp);
					} catch (Exception e) {
						System.out.println("잘못된 입력입니다.");
						sc.nextLine();
						continue;
					}
					break;
				}
				
				phoneNumber.set(fixSel - 1, phoneNumberTmp);
				System.out.println("수정이 완료되었습니다.");
				break;
				
			case 5:
				if (nameList.isEmpty()) {
					System.out.println("등록된 정보가 없습니다.");
					break;
				}
					
				System.out.println("<<< 등록된 정보 >>>");
				for (int cnt = 0; cnt < nameList.size(); cnt++)
					System.out.printf("%d. 이름 : %s\t전화번호 : %s\t이메일 : %s\n", cnt + 1, nameList.get(cnt), phoneNumber.get(cnt), eMail.get(cnt));
				break;
				
			case 6:
				System.out.println("프로그램을 종료합니다.");
				System.exit(0);
				
			default:
				System.out.println("메뉴 확인 후 다시 입력하세요...");
			}

		}

	}
}

'Collection > ArrayList' 카테고리의 다른 글

ArrayList 예제(1)  (0) 2022.07.24
ArrayList(2)  (0) 2022.07.22
ArrayList(1)  (0) 2022.07.22