[Java] tip: 커피 주문 프로그램 만들기 (Scanner, if문, while문)

febCho·2023년 10월 4일
0

Java

목록 보기
9/53

커피 주문 프로그램 만들기 - 문제


		 * [실습]
		 * 커피전문점에서 아메리카노가 4,000원입니다. 마실 커피 수량을
		 * 정하고 돈을 지불하세요.
		 * 지불한 돈에서 발생한 거스름돈을 출력하고 커피의 총 비용보다 지불한
		 * 돈이 적어서 커피를 구매할 수 없을 경우 "금액이 부족합니다."라고
		 * 알려준 후 다시 지불할 수 있는 프로그램을 작성하세요.
		 * (정상적으로 아메리카노를 구매하면 반복문을 빠져나오고
		 * 금액이 부족하면 계속 반복)
		 * 
		 * [입력 예시]
		 * 구매 수량 입력 : 1
		 * 내가 지불한 금액 : 5000
		 * or
		 * 내가 지불한 금액 : 3000
		 * 
		 * [출력 예시]
		 * 거스름돈은 1,000원입니다. -> 반복문을 빠져나감(거스름돈 >=0)
		 * or
		 * 1,000원이 부족합니다. -> 계속 반복
		

커피 주문 프로그램 만들기 - 풀이

package kr.s05.operation;

public class WhileMain08 {
	public static void main(String[] args) {
		
		int price = 4000;//커피 단가
		int quantity;//수량
		int balance;//거스름돈
		int payment;//지불한 돈
		int total;//총 지불해야 할 금액(price * quantity)
		
		java.util.Scanner input = new java.util.Scanner(System.in);
		
		while(true) {
		System.out.print("구매 수량 입력 : ");
		quantity = input.nextInt();
		
		System.out.print("내가 지불한 금액 : ");
		payment = input.nextInt();
		
		//총 지불해야 할 금액
		total = price * quantity;
		//거스름돈
		balance = payment - total;
		
			if(balance >=0) {
				System.out.printf("거스름돈은 %,d원입니다.", balance);
				break;
			}
			//지불한 금액이 부족하여 커피를 구매할 수 없을 때
			else {
				System.out.printf("%,d원이 부족합니다.%n", -balance);
			}
			
		}
		input.close();
	}
}
  1. 4,000원이라는 커피 가격을 반복해 사용하고, 연산도 하기 위해 int price = 4000; price라는 정수형 변수에 값을 대입한다.

  2. Scanner를 통해 구매 수량과 지불 금액을 입력 받는다.

  3. 지불해야 할 금액은 total = price * quantity; 과정을 통해, 거스름돈은 balance = payment - total; 과정을 통해 구한다.

  4. 거스름돈이 if(balance >=0) 0원 이상이면 구매를 마친 뒤, System.out.printf("거스름돈은 %,d원입니다.", balance); 금액을 정상적으로 출력 후 break; break를 통해 while문을 빠져나간다.

  5. 그리고 지불한 금액이 부족하여 커피를 구매할 수 없다면, System.out.printf("%,d원이 부족합니다.%n", -balance); 지불금액이 부족하다고 안내 문구를 출력한다.

  6. 이때 balance 변수 앞에 -(마이너스) 기호가 붙어 있는 이유는 지불한 금액이 부족하다는 것은 곧, payment < total = 지불해야 하는 금액(total)보다 지불한 금액(payment)가 작다는 것이기 때문에 balance = payment - total;를 통해 음수가 된 balance의 값에 -(마이너스) 기호를 붙여 양수를 출력할 수 있도록 해야 한다.
    '-1,000원이 부족합니다.' (X) → '1,000원이 부족합니다.' (O)

profile
Done is better than perfect.

0개의 댓글