728x90
자판기 프로그램
프로그램 개요
- 상품 정보 입력
- 구매하기 / 종료하기
- 구매하기 : 아메리카노 / 카페라떼 / 아이스티 등의 메뉴, 재고를 출력
- 종료하기 : 프로그램 종료
- 구매 상품 입력
- 구매 수량 입력
- 가격 안내
- 현금 입력
- 현금 입력 후 거스름돈 반환
- 구매 완료
- 구매 완료 후 재고 데이터 변경
1. 상품 정보 입력
Scanner sc = new Scanner(System.in);
Random rand = new Random();
int N = 4; // 상품 개수
String[] mName = new String[N]; // 상품 이름
int[] mPrice = new int[N]; // 상품 가격
int[] mCnt = new int[N]; // 상품 재고
// 1. 상품 정보 입력
int index = 0;
while (true) {
if (index == N) {
break;
}
System.out.print((index + 1) + "번째 상품 이름을 입력해주세요) ");
mName[index] = sc.next();
System.out.println(mName[index] + " 이(가) 맞나요?");
System.out.print("1-YES 2-NO : ");
int ans = sc.nextInt();
sc.nextLine(); // 버퍼에 남아있는 쓸데없는 값들을 지워주는 코드
if (ans != 1) {
System.out.println("다시 입력해주세요!");
continue;
}
System.out.print(mName[i] + "의 상품 가격을 입력해주세요) ");
mPrice[i] = sc.nextInt();
System.out.print(mName[i] + "의 상품 재고를 입력해주세요) ");
mCnt[i] = sc.nextInt();
index++;
}
2. 구매하기 / 종료하기
while (true) {
// 2. 구매하기, 종료하기
System.out.println("1- 구매 2- 종료");
System.out.print("입력) ");
int action = sc.nextInt();
if (action == 2) { // 2를 입력한 경우
System.out.println("구매를 종료합니다.");
break;
} else if (action < 1 || 2 < action) { // 범위 내 값을 입력하지 않은 경우
System.out.println("잘못된 입력값입니다.");
System.out.println("확인 후 다시 이용해주세요.");
System.out.println();
continue;
}
3. 구매 상품 입력
int num;
while (true) {
// 2. 상품 출력
System.out.println("=== 메뉴판 ===");
for (int i = 0; i < N; i++) {
System.out.println((i + 1) + ". " + mName[i] + " [" + (mCnt[i] == 0 ? "재고없음" : mCnt[i]) + "]");
}
System.out.println("=============");
// 3. 구매 상품 입력
System.out.print("구매할 상품의 번호를 입력해주세요) ");
num = sc.nextInt();
if (0 < num && num <= N) { // 범위 내 상품을 입력한 경우
if (mCnt[num - 1] != 0) {
break;
} else {
System.out.println("재고가 없어서 구매가 불가능합니다!");
System.out.println("다른 상품을 입력해주세요.");
continue;
}
}
System.out.println("없는 상품입니다!");
System.out.println("확인 후 다시 입력해주세요.");
System.out.println();
}
4. 구매 수량 입력
int cnt;
boolean flag = false;
while (true) {
// 3. 구매 상품 수량 입력
System.out.println("선택한 상품은 " + num + "번 " + mName[num - 1] + "입니다.");
System.out.println("가격: " + mPrice[num - 1] + "원 재고: " + mCnt[num - 1] + "개");
System.out.print("구매할 개수를 입력해주세요) ");
cnt = sc.nextInt();
if (cnt == 0) { // 0개 구매할 시
flag = true;
break;
} else if (0 <cnt && cnt <= mCnt[num -1]) { // 범위 내 수량을 입력한 경우
break;
}
System.out.println("잘못된 입력입니다.");
System.out.println("다시 입력해주세요");
System.out.println();
}
if (flag) {
System.out.println("상품 구매를 취소하였습니다.");
System.out.println("처음으로 돌아갑니다");
continue;
}
5 ~ 6. 가격 안내 / 현금 입력 (거스름돈 반환)
int res = mPrice[num - 1] * cnt;
int money;
System.out.println("금액: " + res + "원");
while (true) {
System.out.print("돈 입력) ");
money = sc.nextInt();
if (res <= money) { // 현금이 구매 금액보다 크거나 같으면
break;
}
System.out.println("잘못된 입력입니다.");
System.out.println("새로 입력해주세요");
System.out.println();
}
res = money - res; // 거스름돈
if (res != 0) { // 거스름돈이 0원이 아니면
System.out.println("거스름돈 " + res + "원 반환 완료!");
}
6. 구매 완료 (재고 변경)
System.out.println("구매 성공!"); // 거스름돈이 0원이면
System.out.println();
mCnt[num - 1] -= cnt; // 구매 수량만큼 차감
}
GitHub
https://github.com/Qkrwnsgus0522/Java
728x90