* [실습]
* 커피전문점에서 아메리카노가 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();
}
}
4,000원이라는 커피 가격을 반복해 사용하고, 연산도 하기 위해 int price = 4000; price라는 정수형 변수에 값을 대입한다.
Scanner를 통해 구매 수량과 지불 금액을 입력 받는다.
지불해야 할 금액은 total = price * quantity; 과정을 통해, 거스름돈은 balance = payment - total; 과정을 통해 구한다.
거스름돈이 if(balance >=0) 0원 이상이면 구매를 마친 뒤, System.out.printf("거스름돈은 %,d원입니다.", balance); 금액을 정상적으로 출력 후 break; break를 통해 while문을 빠져나간다.
그리고 지불한 금액이 부족하여 커피를 구매할 수 없다면, System.out.printf("%,d원이 부족합니다.%n", -balance); 지불금액이 부족하다고 안내 문구를 출력한다.
이때 balance 변수 앞에 -(마이너스) 기호가 붙어 있는 이유는 지불한 금액이 부족하다는 것은 곧, payment < total = 지불해야 하는 금액(total)보다 지불한 금액(payment)가 작다는 것이기 때문에 balance = payment - total;를 통해 음수가 된 balance의 값에 -(마이너스) 기호를 붙여 양수를 출력할 수 있도록 해야 한다.
'-1,000원이 부족합니다.' (X) → '1,000원이 부족합니다.' (O)