내일배움캠프 사전캠프 JAVA 퀘스트 달리기반 2번
🚀 문제
- 자판기 만들기
- 사이다 1,700원
- 콜라 1,900원
- 식혜 2,500원
- 솔의눈 3,000원
Map,Scanner사용
🚀 정답
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
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 1. 음료 설정 (불변 Map)
Map<String, Integer> beverages = Map.of(
"콜라", 1700,
"사이다", 1200,
"스포츠", 2000
);
// 2. 메뉴 출력
System.out.println("=== 메뉴 ===");
for (Map.Entry<String, Integer> entry : beverages.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue() + "원");
}
// 3. 사용자 입력 (음료 선택)
Scanner scanner = new Scanner(System.in);
System.out.print("원하는 음료를 입력하세요: ");
String userChoice = scanner.nextLine();
// 존재하는 음료인지 확인
if (!beverages.containsKey(userChoice)) {
System.out.println("없는 음료입니다.");
return;
}
// 4. 사용자 입력 (투입 금액)
System.out.print("돈을 입력하세요 (원): ");
int coin = scanner.nextInt();
int price = beverages.get(userChoice);
// 5. 구매 가능 여부 판단
if (coin >= price) {
System.out.println(userChoice + " 구매 성공!");
System.out.println("잔돈: " + (coin - price) + "원");
} else {
System.out.println("금액이 부족합니다.");
}
scanner.close();
}
}
🚀 해석
import구문1 2
import java.util.Map; import java.util.Scanner;
Map: 키와 값 쌍으로 데이터를 저장하는 자료구조를 사용하기 위해 필요Scanner: 사용자 입력을 받기 위해 필요
음료 가격 설정
1 2 3 4 5
Map<String, Integer> beverages = Map.of( "콜라", 1700, "사이다", 1200, "스포츠", 2000 );
MashMap대신 Java 9 이상에서 제공하는Map.of()를 사용하면 코드를 더 간단하게 작성할 수 있다.- 단,
Map.of()는 불변(immutable) 이기 때문에 이후 요소를 추가하거나 수정할 수 없다.
Map.of()는 최대 10쌍까지만 지원하므로
그 이상을 넣고 싶다면Map.ofEntries()를 사용해야 한다.- Java 8 이하에서는 사용할 수 없다.
메뉴 출력
1 2 3 4
System.out.println("=== 메뉴 ==="); for (Map.Entry<String, Integer> entry : beverages.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue() + "원"); }
entrySet()으로 Map의 모든 항목을 반복entry.getKey(): 음료 이름entry.getValue(): 가격
사용자로부터 음료 이름 입력받기
1 2 3
Scanner scanner = new Scanner(System.in); System.out.print("원하는 음료를 입력하세요: "); String userChoice = scanner.nextLine();
Scanner를 통해 콘솔로부터 사용자 입력 받기- 입력값을
userChoice변수에 저장
음료 존재 여부 확인
1 2 3 4
if (!beverages.containsKey(userChoice)) { System.out.println("없는 음료입니다."); return; }
- 사용자가 입력한 음료가
Map에 없으면 프로그램 종료
- 사용자가 입력한 음료가
사용자로부터 금액 입력받기
1 2
System.out.print("돈을 입력하세요 (원): "); int coin = scanner.nextInt();
- 사용자가 투입할 금액을 입력
coin변수에 저장
가격 비교 및 결과 출력
1 2 3 4 5 6 7 8
int price = beverages.get(userChoice); if (coin >= price) { System.out.println(userChoice + " 구매 성공!"); System.out.println("잔돈: " + (coin - price) + "원"); } else { System.out.println("금액이 부족합니다."); }
- 선택한 음료의 가격을
price에 저장 - 입력한 돈이 가격 이상이면 구매 성공, 잔돈 출력
- 선택한 음료의 가격을
마무리
1
scanner.close();
Scanner객체 닫기 (자원 정리)