JAVA 프로그래밍

문제

아메리카노, 라떼, 에스프레소를 주문받아 영수증을 출력하는 문제입니다 이를 해결하는 다음 프로그램을 해석하세요 
아메리카노(1), 라떼(2), 에스프레소(3) 중 하나를 선택하세요: 1
아메리카노(1), 라떼(2), 에스프레소(3) 중 하나를 선택하세요: 2
아메리카노(1), 라떼(2), 에스프레소(3) 중 하나를 선택하세요: 3
아메리카노(1), 라떼(2), 에스프레소(3) 중 하나를 선택하세요: 4
항      목   단가  개수
-----------------------
아메리카노   3500   1
라      떼   4000   1
에스프레소   3000   1
-----------------------
합      계   10500원 

아메리카노(1), 라떼(2), 에스프레소(3) 중 하나를 선택하세요: 1
아메리카노(1), 라떼(2), 에스프레소(3) 중 하나를 선택하세요: 1
아메리카노(1), 라떼(2), 에스프레소(3) 중 하나를 선택하세요: 5
항      목   단가  개수
-----------------------
아메리카노   3500   2
-----------------------
합      계   7000원 

아메리카노(1), 라떼(2), 에스프레소(3) 중 하나를 선택하세요: 1
아메리카노(1), 라떼(2), 에스프레소(3) 중 하나를 선택하세요: 2
아메리카노(1), 라떼(2), 에스프레소(3) 중 하나를 선택하세요: 6
항      목   단가  개수
-----------------------
아메리카노   3500   1
라      떼   4000   1
-----------------------
합      계   7500원 

알고리즘

 프로그램 시작 
   커피 주문 준비
   커피 주문 받기
   영수증 출력
프로그램 종료

커피 클래스
   커피 주문 초기화
   커피 주문 추가
   커피 주문 내역을 문자열로 표현
   커피 주문 총합계를 반환

프로그램 코드

	// 파일명 : ./Chapter11/CoffeeOrder.java
	import java.util.Scanner;
	 
	// 커피 클래스  
	class Coffee
	{
		private static int total  = 0;
		private String name;
		private int cost;
		private int count;
		 
		// 커피 주문 초기화   
C1b		public Coffee( String name, int cost ) {
			this.name = name;
			this.cost = cost;
			this.count = 0;
C1e		}
	 
		// 커피 주문 추가   
C2b		public void add() {
			this.count++;
			this.total += this.cost;
C2e		}
	 
		// 커피 주문 내역을 문자열로 표현 
C3b		public String toString() {
			if( this.count == 0 )
				return "";
			else
				return this.name + "   " + this.cost + "   " + this.count + "\n";
C3e		}
		 
		// 커피 주문 총합계를 반환 
C4b		public static int total() {
			return total;
C4e		}
	}
	 
	public class CoffeeOrder
	{
		// 프로그램 시작 
1		public static void main (String[] args ) {
			Scanner scan = new Scanner( System.in );
			// 커피 주문 준비  
2			Coffee[] coffee = {
3			                    new Coffee( "아메리카노", 3500 ),
4			                    new Coffee( "라      떼", 4000 ),
5			                    new Coffee( "에스프레소", 3000 )
			                   };
			                    
			// 커피 주문 받기 
			System.out.print( "아메리카노(1), 라떼(2), 에스프레소(3) 중 하나를 선택하세요: " );
6			for( int order = scan.nextInt(); ( order == 1 ) || ( order == 2 ) || ( order == 3 ); order = scan.nextInt() ) {
7				coffee[ order - 1 ].add();
				System.out.print( "아메리카노(1), 라떼(2), 에스프레소(3) 중 하나를 선택하세요: " );
			}
			 
			// 영수증 출력 
			System.out.println( "\n항      목   단가  개수\n-----------------------" );
8			for( Coffee item : coffee )
9				System.out.print(
10				                  item );
11			System.out.println( "-----------------------\n합      계   "
12			                    + Coffee.total() + "원" );
			scan.close();
		// 프로그램 종료 
13		}
	}

실행 순서

 
 					※ 실행순서 및 메모리상태는 A키(이전) 및 D키(다음)를 눌러도 확인할 수 있습니다