Test/JAVA Test

자판기 프로그램02

오류나면꽥꽥 2023. 5. 8. 14:31

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