문제
- 사용자가 볼 수 있게 메뉴를 표시합니다.
- 다음과 같은 음료를 실행창에 표시합니다.
- 사이다 1,700원
- 콜라 1,900원
- 식혜 2,500원
- 솔의눈 3,000원
- 다음과 같은 음료를 실행창에 표시합니다.
- 사용자는 음료를 선택할 수 있습니다.
- 사용자에게 어떤 음료를 살 것인지를 입력받습니다.
- ex) 사이다
- 목록에 없는 음료일 경우 실행이 종료됩니다.
- 사용자에게 어떤 음료를 살 것인지를 입력받습니다.
- 사용자는 지불할 금액을 입력할 수 있습니다.
- 사용자에게 얼마를 넣을지 입력받습니다.
- ex) 2000
- 지불하는 금액이 선택한 음료의 비용보다 작다면 “돈이 부족합니다.” 를 출력합니다
- 사용자에게 얼마를 넣을지 입력받습니다.
- 사용자는 음료를 구매하고 남은 잔액을 확인할 수 있습니다.
- 잔액을 화면에 표시합니다.
- ex) 입력한 돈 2000원, 사이다 1700원 일때 300원을 잔액으로 보여줍니다.
- 잔액을 화면에 표시합니다.
풀이 과정
1. 음료와 금액을 구분지어 변수에 저장해야 사용자가 입력한 값과 비교하여 프로그램을 실행할 수 있기 때문에, 2차원 배열에 음료와 금액을 따로 저장한다.
2. 반복문을 사용해서 사용자가 입력한 값과 각 배열의 값을 비교한다.
2-1. 만약 배열에 입력한 값이 존재하지 않으면 종료한다.
2-2. 입력값과 배열의 음료명이 일치할 때 해당 인덱스의 금액값을 반환한다.
3. 조건문을 사용해서 사용자가 입력한 값과 2-2에서 반환한 값을 비교한다.
3-1. 입력한 값이 반환된 값보다 작으면 "돈이 부족합니다"를 출력한다.
3-2. 입력한 값이 반환된 값보다 크면 연산으로 잔액을 출력한다.
- 2번 단계에서 이슈 발생 -> 해결
https://go-getter1kim.tistory.com/42
[Java] for-each문에 2차원 배열 사용 이슈
목적음료의 이름과 금액 목록이 2차원 배열로 저장되어 있는 `drinks`와 사용자가 입력한 음료의 이름을 저장한 `drink`를 for-each문으로 비교하고, `drinks` 각 행의 첫 번째 값인 음료 이름과 `drink`가
go-getter1kim.tistory.com
- 3번 과정에서 주의할 점
- 두 값을 비교할 때, `equals` 함수 사용
- `a.equals(b)`
- == 연산자로 비교하는 C언어와 혼동하지 말 것
결과물
import java.util.Scanner;
public class vendingMachine {
public static void main(String[] args){
String [][] drinks= new String [][]{{"사이다", "1700"}, {"콜라", "1900"}, {"식혜", "2500"}, {"솔의눈", "3000"}};
System.out.println(drinks);
Scanner scanner = new Scanner(System.in);
System.out.println("음료를 선택하세요");
String drink = scanner.nextLine();
int price = 0;
for(int i=0;i<drinks.length;i++){
if(drinks[i][0].equals(drink)) {
price = Integer.valueOf(drinks[i][1]);
System.out.println(price);
break;
}
}
System.out.println("금액을 입력하세요");
int pay = scanner.nextInt();
if(pay>=price) System.out.println("잔액: " + (pay-price));
else System.out.println("금액이 부족합니다.");
scanner.close();
}
}
'알고리즘 > 문제 풀이' 카테고리의 다른 글
[부트캠프][Java] ArrayList로 장바구니 구현하기 (0) | 2025.02.26 |
---|---|
[부트캠프][Java] 좌표 출력하기 (0) | 2025.02.24 |
[백준][Java] 백슬래시 출력하기 (0) | 2025.02.22 |
[백준][Java] 큰 값의 정수 3개를 동시에 입력 받아 총합 계산하기 (2) | 2025.02.21 |
[부트캠프][Java] 랜덤 닉네임 만들기 (java.util.Random) (0) | 2025.02.10 |