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("메뉴 확인 후 다시 입력하세요...");
}
}
}
}