1. 문제
- 정보를 효율적으로 저장하기 위해서 음료수와 가격을 함께 저장할 수 있는 딕셔너리를 활용해야 한다.
- 입력을 받아야 하므로 Scanner 클래스로 scanner 인스턴스를 활용해야 한다
- 조건에 따라 다른 출력과 과정을 진행해야 하므로 조건문을 활용해야 한다.
2. 풀이
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Map<String, Integer> beverages = Map.of(
"사이다", 1700,
"콜라", 1900,
"식혜", 2500,
"솔의눈", 3000
);
Scanner scanner = new Scanner(System.in);
for (Map.Entry<String, Integer> beverage : beverages.entrySet()) {
System.out.println(beverage.getKey() + " " + beverage.getValue());
}
System.out.print("음료를 입력해주세요 : ");
String userChoice = scanner.nextLine();
if (!beverages.containsKey(userChoice)) return;
System.out.print("제시할 돈을 입력해주세요 : ");
int money = scanner.nextInt();
if (money < beverages.get(userChoice)) {
System.out.println("돈이 부족합니다.");
}
else {
int rest = money - beverages.get(userChoice);
System.out.println("제시한 돈 : " + money + "원");
System.out.println("남은 돈 : " + rest + "원");
}
}
}
- Java에서 딕셔너리는 HashMap을 통해서 구현이 된다는 것을 몰라서 문제에서 제공하는 힌트를 통해 풀었다.
(Map에 대해 궁금한 것이 많아서 추가적으로 공부하면서 아래에 정리하였다.)
3. Map.of()
1. 불변(Immutable) Map을 생성 (수정 ❌, 삭제 ❌, 추가 ❌)
Map<String, Integer> beverages = Map.of(
"사이다", 1700,
"콜라", 1900,
"식혜", 2500,
"솔의눈", 3000
);
drinks.put("솔의눈", 2800); // ❌ UnsupportedOperationException 발생!
drinks.remove("콜라"); // ❌ UnsupportedOperationException 발생!
drinks.replace("사이다", 1800); // ❌ UnsupportedOperationException 발생!
2. 사용최대 10개까지의 키-값 쌍을 지원 (11개 이상 저장하려면 Map.ofEntries() 사용)
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, Integer> bigMap = Map.ofEntries(
Map.entry("콜라", 1900),
Map.entry("사이다", 1700),
Map.entry("식혜", 2500),
Map.entry("솔의눈", 3000),
Map.entry("밀크티", 3500),
Map.entry("커피", 2000),
Map.entry("녹차", 1800),
Map.entry("홍차", 2200),
Map.entry("라떼", 4000),
Map.entry("아이스티", 2300),
Map.entry("에너지드링크", 2700) // 11번째 요소
);
System.out.println(bigMap);
}
}
3. Null 키나 Null 값 저장 불가 (NullPointerException 발생)
Map.of("콜라", null); // ❌ NullPointerException 발생!
Map.of(null, 1900); // ❌ NullPointerException 발생!
※ Map에 대한 추가적인 공부는 더 하였지만, 가독성을 위해서 따로 정리하였다.
https://kimyongjun0129.tistory.com/82
4. Scanner 클래스
scanner 클래스는 Java에서 입력 받을 때 사용하는 클래스 중 하나이다.
import java.util.Scanner;
java.util 패키지에 속해 있어 위와 같이 import 시킬 수 있다.
1. scanner 객체 생성
import java.util.Scanner; // Scanner 클래스 가져오기
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // Scanner 객체 생성
}
}
Scanner를 사용하려면 우선 객체를 생성해야 한다.
2. 메서드
메서드 | 설명 |
next() | 공백 전까지 한 단어 입력받음 |
nextLine() | 한 줄을 입력받음 (Enter 포함) |
nextInt() | 정수(int) 입력받음 |
nextDouble() | 실수(double) 입력받음 |
nextBoolean() | true 또는 false 입력받음 |
nextLong() | long 타입 입력받음 |
nextFloat() | float 타입 입력받음 |
Scanner 클래스에는 다양한 데이터 타입을 입력받을 수 있는 메서드가 존재한다.
3. 예제 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("이름을 입력하세요: ");
String name = sc.nextLine(); // 문자열 한 줄 입력
System.out.print("나이를 입력하세요: ");
int age = sc.nextInt(); // 정수 입력
System.out.println("이름: " + name + ", 나이: " + age);
sc.close(); // Scanner 닫기
}
}
'JAVA' 카테고리의 다른 글
[JAVA] JAVA란? (0) | 2025.04.11 |
---|---|
[내일 배움 캠프, JAVA 달리기 반] Lv.3 단어 맞추기 게임 (0) | 2025.04.04 |
[내일 배움 캠프, JAVA 달리기 반] 보너스 문제 : 가위 바위 보 (0) | 2025.04.03 |
[Java] Map 자료구조와 Map 인터페이스란? (0) | 2025.04.02 |
[내일 배움 캠프, JAVA 달리기 반] Lv1. 랜덤 닉네임 생성기 (0) | 2025.04.01 |