문제
1.사용자가 볼 수 있게 메뉴를 표시합니다.
다음과 같은 음료를 실행창에 표시합니다.
사이다 1,700원
콜라 1,900원
식혜 2,500원
솔의눈 3,000원
2.사용자는 음료를 선택할 수 있습니다.
사용자에게 어떤 음료를 살 것인지를 입력받습니다.
목록에 없는 음료일 경우 실행이 종료됩니다.
3.사용자는 지불할 금액을 입력할 수 있습니다.
사용자에게 얼마를 넣을지 입력받습니다.
지불하는 금액이 선택한 음료의 비용보다 작다면 “돈이 부족합니다.” 를 출력합니다
4.사용자는 음료를 구매하고 남은 잔액을 확인할 수 있습니다.
잔액을 화면에 표시합니다.
입력한 돈 2000원, 사이다 1700원 일때 300원을 잔액으로 보여줍니다.
코드
map 컬렉션과 Scanner를 이용하여 풀어보았다.
참고:https://computerreport.tistory.com/31
[Java]Map 컬렉션
자판기 프로그램을 만드는 도중 단순한 printf 를 출력하기 보다 Map 컬렉션을 사용하면 더 효과적일 수 있을거같았다.Map이란?Map은 키+키 값으로 구성된 엔트리 객체이다.(키 중복 x , 값 중복 ㅇ
computerreport.tistory.com
import java.util.HashMap;
import java.util.Map;
import java.util.Iterator;
import java.util.Set;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//HashMap 컬렉션을 이용해 <키,값> 입력
Map<String,Integer> beverages = new HashMap<String,Integer>();
beverages.put("사이다",1700);
beverages.put("콜라",1900);
beverages.put("식혜",2500);
beverages.put("솔의눈",3000);
//Set 컬렉션을 이용해 반복자를 통해 모든<키,값> 출력
Set<String> keySet =beverages.keySet();
Iterator<String>KeyIterator =keySet.iterator();
while(KeyIterator.hasNext())
{
String k=KeyIterator.next();
Integer v =beverages.get(k);
System.out.println(k + " : "+ v);
}
//키값을 입력받아 해당 값이 있는지 확인
Scanner scanner =new Scanner(System.in);
String userChoice = scanner.nextLine();
if(beverages.containsKey(userChoice) == false)
{
System.out.print("실행을 종료합니다");
System.exit(0);
}
System.out.println(beverages.get(userChoice));
int coin = scanner.nextInt();
if(coin<beverages.get(userChoice))
{
System.out.println("돈이 부족합니다");
}
else {
//입력한 금액에 입력한 키에 해당하는 값을 빼 잔돈 계산
int remain = coin - beverages.get(userChoice);
System.out.println(remain);
}
}
}
회고
- 키를 입력하고 값을 불러오는 기능이 있는 함수를 찾아보다가 map 컬렉션을 적용시키는게 좋아보여 한번 더 공부하였음.
- 나중에 금융 프로젝트를 적용시킬때도 자주 사용할거 같기 때문에 주기적으로 공부하기
'코딩테스트 > Java' 카테고리의 다른 글
[Java]자연수 뒤집어 배열로 만들기(valueOf()사용) (0) | 2025.03.04 |
---|---|
[Java]가위 바위 보 게임 (2) | 2025.02.11 |
[Java]Lv3. 단어 맞추기 게임 (1) | 2025.02.10 |
[Java]Lv1. 랜덤 닉네임 생성기 (0) | 2025.02.06 |
[Java]반복문 연습하기 (0) | 2025.02.06 |