명품 자바 Programming
Chapter7 OpenChallenge
Q :
제네릭 해시맵(HashMap)을 이용하여 전화번호 관리 프로그램을 만들어보자. Phone 클래스를 작성하여 하나의 전화번호 정보를 표현한다. 하나의 전화번호 정보는 이름, 주소, 전화번호로 구성된다. 동일한 이름을 가진 사람이 입력되지 않도록 프로그램에서 걸러야 한다. 이 프로그램의 메뉴는 삽입, 삭제, 전체 보기, 종료의 총 5가지이다. 실행 사례를 들면 다음과 같다. 문제를 단순화하기 위해 파일 입출력은 하지 않아도 되며 연습문제를 통해 파일 입출력 메뉴를 삽입해보는 것이 좋겠다.
Solution
Phone.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | package OpenChallenge; public class Phone { private String name; private String address; private String num; public Phone() {} public Phone(String name, String address, String num) { super(); this.name = name; this.address = address; this.num = num; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getNum() { return num; } public void setNum(String num) { this.num = num; } public void show() { System.out.println(name + " " + address + " " + num); } } | cs |
PhoneBook.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | package OpenChallenge; import java.util.*; public class Phonebook { Scanner in = new Scanner(System.in); HashMap<String, Phone> phonebookHMap = new HashMap<String, Phone>(); public void run() { System.out.println("-------------------------------------"); System.out.println("전화번호 관리 프로그램을 시작합니다."); System.out.println("-------------------------------------"); while(true) { int menu; System.out.print("삽입:0. 삭제:1, 찾기:2, 전체보기:3, 종료:4>>"); menu = in.nextInt(); if(menu == 0) makeNew(); else if(menu == 1) delete(); else if(menu == 2) find(); else if(menu == 3) printAll(); else if(menu == 4) { System.out.println("종료합니다."); break; } else System.out.println("0~4 중 선택하세요."); } } public void makeNew() { Phone phone = new Phone(); System.out.print("이름>>"); phone.setName(in.next()); System.out.print("주소>>"); phone.setAddress(in.next()); System.out.print("번호>>"); phone.setNum(in.next()); phonebookHMap.put(phone.getName(), phone); } public void delete() { String name; System.out.print("이름>>"); name = in.next(); if(phonebookHMap.containsKey(name)== true) { phonebookHMap.remove(name); System.out.println(name + "은(는) 삭제되었습니다."); } else System.out.println(name + "은(는) 등록되지 않은 사람입니다."); } public void find() { String name; System.out.print("이름>>"); name = in.next(); if(phonebookHMap.containsKey(name)== true) { Phone phone = phonebookHMap.get(name); phone.show(); } else System.out.println(name + "은(는) 등록되지 않은 사람입니다."); } public void printAll() { Set<String> names = phonebookHMap.keySet(); Iterator<String> it = names.iterator(); while(it.hasNext()) { String name = it.next(); Phone phone = phonebookHMap.get(name); phone.show(); } } public static void main(String[] args) { Phonebook phonebook = new Phonebook(); phonebook.run(); } } | cs |
Key Point
해쉬 맵을 이용한 키 값 다루기, CRUD 모델 구축
유용하셨다면 공감 버튼 ↓ 눌러주세요!
728x90
'# Language > Java' 카테고리의 다른 글
내부 정적 클래스 (0) | 2018.08.03 |
---|---|
명품 JAVA 프로그래밍 7장 2번 (0) | 2018.07.22 |
명품 JAVA 프로그래밍 7장 1번 (1) | 2018.07.22 |
명품 JAVA 프로그래밍 6장 8번 (0) | 2018.07.21 |
명품 JAVA 프로그래밍 6장 7번 (0) | 2018.07.21 |
명품 JAVA 프로그래밍 6장 6번 (0) | 2018.07.21 |
명품 JAVA 프로그래밍 6장 5번 (0) | 2018.07.21 |