JAVA/JAVA 예제
[JAVA] 반복문 예제 (자판기 만들기)
웹코린이
2023. 5. 17. 17:25
728x90
[문제]
[ 자판기 프로그램 ]
상품 이름, 가격, 개수 입력 받기
구매하기 / 종료하기
종료하기 : 프로그램 종료
구매하기
Ex)아메리카노,카페라떼,아이스티등의 메뉴를 출력
구매 개수 선택
가격 안내
현금 입력 --> 거스름돈 반환
재고 데이터 있음
1. 상품 이름 입력 받기
int N = 2; // 상품이 2개라는 뜻
String mName[] = new String[N]; // 상품 이름 배열
while (true) {
if (index == N) { // 상품이름이 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(); // 상품 이름이 맞는지 입력
if (ans != 1) { // 답이 No라면
System.out.println("다시 입력하세요 ! ");
continue; // while문으로 이동
}
index++; // 0번 인덱스에 이름이 채워졌으므로 1번 인덱스로 이동
}
1-1. 상품 가격 입력 받기
가격 배열 안에 선언된 'N'은 위에서 선언한 'int N = 2;'랑 같은 변수이다.
int mPrice[] = new int[N]; // 상품 가격 배열
for (int i = 0; i < mPrice.length; i++) {
System.out.print(mName[i] + "상품 가격 입력 : ");
mPrice[i] = sc.nextInt(); // 상품 가격 입력
System.out.println(mName[i] + "상품 가격 " + mPrice[i] + "원 저장 완료!");
System.out.println();
}
1-2. 상품 개수 입력 받기
위와 마찬가지로 재고 배열 안에 선언된 'N'은 위에서 선언한 것과 같다.
int mCnt[] = new int[N]; // 상품 재고 배열
for (int i = 0; i < mCnt.length; i++) {
System.out.print(mName[i] + "의 개수 입력: ");
mCnt[i] = sc.nextInt(); // 상품 개수 입력
System.out.println(mName[i] + "상품 개수 " + mCnt[i] + "개 저장 완료!");
}
2. 구매 / 종료 (종료 조건)
// 상품 구매, 종료 입력
while (true) {
System.out.println("1. 구매 2. 종료");
System.out.print("입력) ");
int action = sc.nextInt(); // 구매 or 종료 입력
if (action == 2) { // 2번을 입력했다면
System.out.println("프로그램 종료");
System.out.println();
break; // while문 탈출
} else if (action < 1 || action > 2) { // 유효성 검사 (1이나 2를 입력하지 않았을 시)
System.out.println("유효하지 않은 값입니다,");
System.out.println("다시 입력하세요.");
continue; // while문 처음으로 이동
}
2-1. '구입'을 입력했을 시 메뉴 목록 및 재고 개수 출력
// 구입을 입력했을 시 메뉴목록 및 재고 개수 출력
while (true) {
System.out.println("=====메뉴목록=====");
for (int i = 0; i < mName.length; i++) {
System.out.print((i + 1) + ". " + mName[i] + "[");
if (mCnt[i] == 0) { // 재고가 0개라면
System.out.print("재고 없음"); // 재고 없음 출력
} else { // 재고가 있을 시
System.out.print(mCnt[i]); // 재고 개수 출력
}
System.out.println("]");
}
System.out.println("================");
System.out.print("구매할 상품 번호 입력) ");
num = sc.nextInt(); // 구매할 상품 입력
if ((1 <= num && num <= N) && (mCnt[num - 1] > 0)) { // 1 ~ 4 사이이고, 재고도 있어야 한다
break; // 정상적으로 입력했다면 while문 탈출
} else if (num < 1 || num > N) { // 번호를 잘못 입력했을 시
System.out.println("없는 상품입니다.");
} else if (mCnt[num - 1] == 0) { // 재고가 0개라면
System.out.println("재고가 없어서 구매가 불가능합니다.");
}
}
3. 선택한 상품 안내 및 가격 안내
int cnt = 0; // 개수 입력 변수 선언
while (true) {
System.out.println("선택한 상품은 " + mName[num - 1] + "입니다.");
System.out.println("가격은 " + mPrice[num - 1] + "원 이고, " + "재고는 " + mCnt[num - 1] + "개 입니다.");
System.out.print("구매할 개수 입력) ");
cnt = sc.nextInt(); // 구매할 물품 개수 입력
if (0 <= cnt && cnt <= mCnt[num - 1]) { // 제대로 입력했다면
break; // while문 탈출
} else if (mCnt[num - 1] == 0) { // 재고의 개수가 0개라면
System.out.println("재고가 없습니다.");
System.out.println("다시 선택해주세요.");
continue; //while문 처음으로 이동
}
}
4. 지불할 금액 입력 및 거스름돈 반환
int reult = 0;
while (true) {
result = mPrice[num - 1] * cnt; // 물품 한개의 가격 * 개수
System.out.println("지불하실 금액은 " + result + "원 입니다.");
System.out.print("돈 입력) ");
money = sc.nextInt(); // 지불할 돈 입력
if (result <= money) { // 지불할 돈이 물품 가격보다 많다면
break; //while문 탈출
}
System.out.println("다시 선택해주세요."); // 그렇지 않다면 출력
}
result = money - result; // 거스름돈 계산
if (result != 0) { // 거스름돈이 0원이 아니라면
System.out.println("거스름돈은 " + result + "원 입니다. ");
}
System.out.println("구매 완료!");
mCnt[num - 1] -= cnt; // 장바구니에 넣고 안산 경우를 생각해서 반복문이 끝날 때 재고 -1 코드 배치
[실행 결과]
1번 상품 이름 입력 : 콜라
콜라(이)가 맞나요?
1. Yes 2. No 1
2번 상품 이름 입력 : 사이다
사이다(이)가 맞나요?
1. Yes 2. No 1
콜라상품 가격 입력 : 1000
콜라상품 가격 1000원 저장 완료!
사이다상품 가격 입력 : 1500
사이다상품 가격 1500원 저장 완료!
콜라의 개수 입력: 5
콜라상품 개수 5개 저장 완료!
사이다의 개수 입력: 5
사이다상품 개수 5개 저장 완료!
1. 구매 2. 종료
입력) 1
=====메뉴목록=====
1. 콜라[5]
2. 사이다[5]
================
구매할 상품 번호 입력) 1
선택한 상품은 콜라입니다.
가격은 1000원 이고, 재고는 5개 입니다.
구매할 개수 입력) 5
지불하실 금액은 5000원 입니다.
돈 입력) 6000
거스름돈은 1000원 입니다.
구매 완료!
1. 구매 2. 종료
입력) 1
=====메뉴목록=====
1. 콜라[재고 없음]
2. 사이다[5]
================
구매할 상품 번호 입력) 1
재고가 없어서 구매가 불가능합니다.
=====메뉴목록=====
1. 콜라[재고 없음]
2. 사이다[5]
================
구매할 상품 번호 입력) 2
선택한 상품은 사이다입니다.
가격은 1500원 이고, 재고는 5개 입니다.
구매할 개수 입력) 5
지불하실 금액은 7500원 입니다.
돈 입력) 7500
구매 완료!
728x90