실습(HashMap 예제)
- 카페 메뉴판 시스템 프로그램 만들기
0. 실행할 항목 입력받기
while(true) {
System.out.println("1. 메뉴 추가하기");
System.out.println("2. 메뉴 수정하기");
System.out.println("3. 메뉴 삭제하기");
System.out.println("4. 전체 메뉴보기");
System.out.println("5. 나가기");
System.out.print("입력 >> ");
int choice = Integer.parseInt(sc.nextLine());
}
1. key값이 존재하는지 확인하는 메소드 생성
public static boolean containsKey(HashMap<String, Integer> map, String key) {
for (String k : map.keySet()) {
if(k.equals(key)) { // key값이 중복일 때
return true;
}
}
return false;
}
2. 메뉴 추가하기
if(choice == 1) {
System.out.print("메뉴 입력 >> ");
String menu = sc.nextLine();
// 이미 menus에 추가하고자 하는 key값이 존재한다면 추가 실패 출력하기
if(HashMapTask.containsKey(menus, menu)) {
System.out.println("추가 실패 : 중복된 메뉴 존재");
} else {
System.out.print("가격 입력 >> ");
int price = Integer.parseInt(sc.nextLine());
menus.put(menu, price);
System.out.println("추가 성공");
}
}


3. 메뉴 가격 수정하기
if(choice == 2) {
System.out.print("수정할 메뉴 >> ");
String menu = sc.nextLine();
// 수정하고자 하는 key값이 존재하는지 검사
if(HashMapTask.containsKey(menus, menu)) {
System.out.print("수정할 가격 >> ");
int price = Integer.parseInt(sc.nextLine());
menus.put(menu, price);
System.out.println("수정 완료");
} else {
// key값이 존재하지 않는다면 수정 실패 출력하기
System.out.println("수정 실패 : 해당 메뉴가 존재하지 않음");
}
}


4. 메뉴 삭제하기
if(choice == 3) {
System.out.print("삭제할 메뉴 >> ");
String menu = sc.nextLine();
if(HashMapTask.containsKey(menus, menu)) {
menus.remove(menu);
System.out.println("삭제 성공");
} else {
// key값이 존재하지 않는다면 삭제 실패 출력하기
System.out.println("삭제 실패");
}
}


5. 전체 메뉴보기
if(choice == 4) {
System.out.println("-----menu-----");
for (String key : menus.keySet()) {
System.out.println(key + " : " + menus.get(key));
}
}

6. 나가기
if(choice == 5) {
break;
}

※ 전체 코드
import java.util.HashMap;
import java.util.Scanner;
public class HashMapTask {
// key값이 존재하는지 확인하는 메소드
public static boolean containsKey(HashMap<String, Integer> map, String key) {
for (String k : map.keySet()) {
if(k.equals(key)) { // key값이 중복일 때
return true;
}
}
return false;
}
public static void main(String[] args) {
// 카페 메뉴판 시스템 프로그램
Scanner sc = new Scanner(System.in);
// 음식 이름과 가격을 저장할 HashMap
HashMap<String, Integer> menus = new HashMap<String, Integer>();
while(true) {
System.out.println("1. 메뉴 추가하기");
System.out.println("2. 메뉴 수정하기");
System.out.println("3. 메뉴 삭제하기");
System.out.println("4. 전체 메뉴보기");
System.out.println("5. 나가기");
System.out.print("입력 >> ");
int choice = Integer.parseInt(sc.nextLine());
if(choice == 5) {
break;
} else if(choice == 1) {
// 메뉴 추가하기
System.out.print("메뉴 입력 >> ");
String menu = sc.nextLine();
// 이미 menus에 내가 추가하고자 하는 key값이 존재한다면 추가 실패 출력하기
if(HashMapTask.containsKey(menus, menu)) {
System.out.println("추가 실패 : 중복된 메뉴 존재");
} else {
System.out.print("가격 입력 >> ");
int price = Integer.parseInt(sc.nextLine());
menus.put(menu, price);
System.out.println("추가 성공");
}
} else if(choice == 2) {
// 메뉴 가격 수정하기
System.out.print("수정할 메뉴 >> ");
String menu = sc.nextLine();
// 수정하고자 하는 key값이 존재하는지 검사
if(HashMapTask.containsKey(menus, menu)) {
System.out.print("수정할 가격 >> ");
int price = Integer.parseInt(sc.nextLine());
menus.put(menu, price);
System.out.println("수정 완료");
} else {
// key값이 존재하지 않는다면 수정 실패 출력하기
System.out.println("수정 실패 : 해당 메뉴가 존재하지 않음");
}
} else if(choice == 3) {
// 메뉴 삭제하기
System.out.print("삭제할 메뉴 >> ");
String menu = sc.nextLine();
if(HashMapTask.containsKey(menus, menu)) {
menus.remove(menu);
System.out.println("삭제 성공");
} else {
// key값이 존재하지 않는다면 삭제 실패 출력하기
System.out.println("삭제 실패");
}
} else if(choice == 4) {
// 전체 메뉴보기
System.out.println("-----menu-----");
for (String key : menus.keySet()) {
System.out.println(key + " : " + menus.get(key));
}
} else {
System.out.println("잘못 입력했습니다");
}
}
}
}