본문 바로가기
프로그래밍/Java

[자바] 중국집 메뉴 주문 (금액 계산) 프로그램(while 문 활용)

by 청량리 물냉면 2020. 11. 9.
반응형
문제

while 문을 사용하여 중국집 메뉴 주문 프로그램을 작성해보자.

 

<조건>

1. 메뉴는 4가지

2. 각 메뉴의 가격은 임의대로 지정한다.

3. 사용자는 메뉴와 주문할 메뉴 개수를 입력한다.

4. 사용자의 주문은 사용자가 종료를 원할 때까지 반복된다.

5. 최종적으로 모든 주문의 합계를 출력한다.

 

 

실행화면

 

 

 

코드
import java.util.Scanner;
public class china {
	public static void main(String[] args) {
		Scanner sc = new Scanner (System.in);
		
		int ord = 10;	//사용자가 입력할 메뉴를 저장하는 변수
		int num = 0;    //메뉴의 개수를 저장할 변수
		int x = 0;      //조건문 안에 들어갈 변수, 음식의 값을 저장하는 변수
		int total = 0;  //총 금액
		
		while(ord != 0) {  //사용자가 메뉴 입력시 0을 입력할 때까지 반복
			System.out.println("주문하실 메뉴를 입력해주세요.\n 1.짜장면  2.짬뽕  3.탕수육  4.크림새우");
			ord = Integer.parseInt(sc.nextLine());
			System.out.println("주문하실 메뉴의 개수를 입력해주세요.");
			num = Integer.parseInt(sc.nextLine());
			
			if(ord == 1) {
				x = 4000;
			} else if(ord == 2) {
				x = 4500;
			} else if(ord == 3) {
				x = 6000;
			} else if(ord == 4) {
				x = 6500;
			} 
			total += x*num;   //반복문이 한번 돌때마다 총 금액을 가산하여 total변수에 저장
			System.out.print("종료하시겠습니까? 0.종료  5.계속\n");
			ord = Integer.parseInt(sc.nextLine());		
		}
		System.out.println("주문하신 메뉴의 총 금액은 "+total+"원 입니다.");
        //반복문에서 빠져나오면 총 금액을 출력
	}
}

 

 

주의사항

반복문 내에서 계속 반복해야 할 지점을 염두에 두고 조건을 잘 설정해야 한다.

무한 루프에 빠지면 이클립스 IDE가 오작동을 일으킨다.

이 문제의 경우 사용자에게 언제 무엇을 입력받을지를 잘 생각하고 while 문 안에 적절히 배치하는 것이 도움이 되었다.

 

나의 경우,

1. 초기 메뉴판 입력을 while 문안에 넣지 않아서 오류 발생

Scanner sc = new Scanner (System.in);
		
int ord = 10;	
int num = 0;
int x = 0;
int total = 0;
		
while(ord != 0) {
	System.out.println("주문하실 메뉴를 입력해주세요.\n 1.짜장면  2.짬뽕  3.탕수육  4.크림새우");
	ord = Integer.parseInt(sc.nextLine());
	System.out.println("주문하실 메뉴의 개수를 입력해주세요.");
	num = Integer.parseInt(sc.nextLine());

이 부분에서,

Scanner sc = new Scanner (System.in);
System.out.println("주문하실 메뉴를 입력해주세요.\n 1.짜장면  2.짬뽕  3.탕수육  4.크림새우");
ord = Integer.parseInt(sc.nextLine());
System.out.println("주문하실 메뉴의 개수를 입력해주세요.");
num = Integer.parseInt(sc.nextLine());
		
int ord = 10;	
int num = 0;
int x = 0;
int total = 0;
		
while(ord != 0) {

 

초기에는 이렇게 코딩을 했는데, 당연하게도 메뉴주문판이 반복되지 않았다.

 

2. 마지막 부분, 종료 의사를 묻는 지점

total += x*num;
System.out.print("종료하시겠습니까? 0.종료  5.계속\n");
ord = Integer.parseInt(sc.nextLine());

 

이 부분에서는 total 값을 지정하는 것도 한번 헷갈렸고,(total = x*num으로 코딩하였더니 마지막 계산 부분만출력되었다.) 두 번째로 헷갈린 부분이 종료 안내 문구 뒤 사용자에게 다시 한번 값을 입력받는 부분이다.

처음에 ord = Integer.parseInt(sc.nextLine()); 부분을 추가하지 않았었는데, 바로 메뉴 주문판이 떠서 의도대로 코딩이 되지 않았었다.

 

반응형