1. 구매하기 / 종료하기
2-1. 종료하기 : 프로그램 종료
2-2. 구매하기 : 아메리카노/카페라떼/아이스티 등의 메뉴를 출력
3. 몇개 구매?
4. 가격안내
5. 현금입력 -> 거스름돈 반환
* *재고 데이터 0
package class01;
import java.util.Random;
import java.util.Scanner;
public class Test01 {
/*
* 자판기 프로그램
* 유효성 검사가 들어가야할까?
* 총 몇개 추가되어야할까? -> 4번
* : 유효성 검사는 입력할때마다 진행!
* 1) 사용자에게 안내 -> 올바른 입력을 알려주면 더 좋음
* 2) 프로그램의 강제종료를 예방
*/
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
Random rand = new Random();
int N=3; // 메뉴의 개수
// *** 유지보수 유리하기 위함!
String[] mName=new String[N]; // 메뉴이름 배열
mName[0]="아메리카노";
mName[1]="카페라떼";
mName[2]="아이스티";
int[] mPrice=new int[N];
mPrice[0]=2000;
mPrice[1]=3500;
mPrice[2]=3000;
int[] mCnt=new int[N];
for(int i=0;i<mCnt.length;i++) {
mCnt[i]=rand.nextInt(3)+1; // 1~3개
}
while(true) { // 몇번 반복할지 모르기 때문에
// 1. 출력
System.out.println("1.구매 2.종료");
System.out.println("입력)");
int action=sc.nextInt();
// 2-1. 종료
if(action==2) { // 종료하기 버튼을 눌렀다면
System.out.println("이용해주셔서 감사합니다:)");
break; // 무한루트네? 종료조건 필수
}else if(action<1 || 2<action) { // 유효성 검사
System.out.println("잘못된 입력값입니다.");
System.out.println("확인후 다시 이용해주세요.");
continue; // 다시 갈 수 있도록
}
// 2-2. 구매
int num;
while(true) {
System.out.println("=== 메뉴판 ===");
for(int i=0;i<mName.length;i++) {
System.out.println((i+1)+". "+mName[i]);
}
System.out.println("=============");
System.out.println("구매할 상품의 번호를 입력) ");
num=sc.nextInt();
// num (지역)변수는 while블록에서 선언되었기때문에
// 블록을 벗어나면 소멸됨
if(1<=num && num<=N) { // 제대로 입력했다면
break;
}
System.out.println("없는 상품번호입니다!");
System.out.println("다시 입력하세요!");
System.out.println();
}
// 4. 가격안내 구매 개수
int cnt; // 지역변수의 특성
while(true) { // 유효성 검사 구매할 개수가 음수거나 재고보다 많으면
System.out.println("선택한 상품은"+mName[num-1]+"입니다.");
System.out.println("가격: "+mPrice[num-1]+"원"+" 재고:"+mCnt[num-1]+"개");
System.out.println("구매할 개수를 입력) ");
cnt=sc.nextInt();
if(cnt>=0 && mCnt[num-1]>=cnt) {
break;
}
System.out.println("잘못된 입력값입니다.");
System.out.println("다시 입력하세요!");
System.out.println();
}
int money;
int res=mPrice[num-1]*cnt;
while(true) {
System.out.println("금액: "+res+"원");
System.out.println("돈 입력) ");
money=sc.nextInt();
if(res<=money) {
break;
}
System.out.println("잘못된 입력값입니다.");
System.out.println("다시 입력하세요!");
System.out.println();
}
res=money-res;
if(res!=0) {
System.out.println("거스름돈: "+res+"원 반환 완료!");
}
System.out.println("구매 성공!");
System.out.println();
mCnt[num-1]-=cnt; // 장바구니 이슈를 생각해볼것!
}
}
}
'Test > JAVA Test' 카테고리의 다른 글
1시간20분 전 시간 출력 (0) | 2023.05.14 |
---|---|
자판기 프로그램03 (0) | 2023.05.08 |
학생 6명에 대한 점수 구하기 (0) | 2023.05.08 |
나이에 맞게 금액 출력하세요. (0) | 2023.05.07 |
월에 맞는 계절을 출력하세요. (0) | 2023.05.05 |