복습11 - Java 응용

2025. 1. 25. 20:24·Java
자판기문제 
복습 10 코드 수정 + 선생님 코드

선생님이 메뉴 출력부분 넘 길다고 하셔서

스트링빌더로 바꿔봤따

package re_html;
import java.util.ArrayList;
import java.util.Scanner;

public class re_java10 {
	public static void main(String[] args) {
		re_java10_box rb = new re_java10_box();
		rb.main_method();
	}
}

class re_java10_box extends ab1{
	String menu[][] = {
			{"1","콜라","3200"},
			{"2","커피","1700"},
			{"3","아이스크림","800"},
			{"4","오렌지 쥬스","1200"}
		};
	private int mn = 0;
	private int ea = 0;
	
	public re_java10_box() {
		sc = new Scanner(System.in);
		all = new ArrayList<ArrayList<String>>();
		int i = 0;
		int j = 0;
		while(i<menu.length) {
			j=0;
			arr = new ArrayList<>();
			while(j<menu[0].length) {
				arr.add(menu[i][j]);
				j++;
			}
			this.all.add(arr);
			i++;
		}
	}
	
	private void print_menu() {
		StringBuilder mnsb = new StringBuilder();
		StringBuilder mnsb2 = new StringBuilder();
		
		mnsb.append("[메뉴 배열 및 1EA 가격]\n");
		mnsb2.append("[메뉴 선택]\n");
		int i = 0;
		while(i<all.size()) {
			mnsb.append(all.get(i).get(0)+". ");
			mnsb.append(all.get(i).get(1)+" - ");
			mnsb.append(all.get(i).get(2)+"\n");
			
			mnsb2.append(all.get(i).get(0)+". ");
			if(i==all.size()-1) {
				mnsb2.append(all.get(i).get(1));
			}else {
				mnsb2.append(all.get(i).get(1)+", ");
			}
			i++;
		}
		mnsb2.append(" : ");
		System.out.println(mnsb);
		System.out.println(mnsb2);
	}
	
	@Override
	public void main_method() {
		print_menu();
		
		try {
			while(true) {	//메뉴 입력
				this.mn = sc.nextInt();
				if(this.mn>=1&&this.mn<=4) {
					break;
				}else {
					System.out.println("다시 입력해주세요 : ");
				}
			}
			
			System.out.println("해당 메뉴의 갯수를 입력하세요 : ");
			while(true) {	//개수 입력
				this.ea = sc.nextInt();
				if(this.ea>=1) {
					break;
				}else {
					System.out.println("다시 입력해주세요 : ");
				}
			}
			System.out.println("총 결제 금액 : "+ calc_amt()+"원");
		}catch(Exception e){
			System.out.println("숫자를 입력해주세요");
			new re_java10_box().main_method();
		}finally {
			sc.close();
		}
		
	}
	
	private int calc_amt() {
		int m = Integer.parseInt(all.get(mn-1).get(2)) * ea;
		return m;
	}	
}

 

아래는 선생님 코드 + 추상클래스파일 사용

package re_html;

import java.util.*;

//추상클래스

public abstract class ab1 {
	Scanner sc = null;
	ArrayList<String> arr = null;
	ArrayList<ArrayList<String>> all = null;
	String user = null;
	int number[] = null;
	String datas[] = null;
	
	public abstract void main_method();	//오버라이드 필수 
	public Integer box1() {
		return 0;
	};
	public String box2() {
		return null;
	}
	public ArrayList<String> arr_method(){
		return null;
	}
	public ArrayList<ArrayList<String>> all_method(){
		return null;
	}

}
package re_html;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class re_java10t {
/*
 응용문제 - abstract 클래스 사용
 사용자가 메뉴와 갯수를 입력하면 총 결제 금액을 출력하는 프로세서를 작성
 메뉴 및 가격 배열의 형태는 자유;
 [메뉴 배열 및 1EA가격]
 1. 콜라 - 3000
 2. 커피 -1500
 3. 아이스크림 -500
 4. 오렌지 주스 -1200
 
 [메뉴 선택]
 1.콜라, 2. 커피, 3. 아이스크림 4. 오렌지주스 : 1
 해당 메뉴의 갯수을 입력하세요 : 5
 총 결제 금액 15000
 */
public static void main(String[] args) {
		re_java10t_box rb = new re_java10t_box();
		rb.main_method();
		rb.kiosk();
	}
}

class re_java10t_box extends ab1{
	String user = null;
	int user2 = 0;
	String menus[][]= {
			{"1","콜라","3200"},
			{"2","커피","1700"},
			{"3","아이스크림","800"},
			{"4","오렌지 쥬스","1200"}
		};
	Integer total = null;
	Scanner sc = null;
	StringBuilder sb = new StringBuilder(); //메뉴를 적용하려는 변수

	public void kiosk() {
		
		this.sc = new Scanner(System.in);
		this.main_method();

	}
	@Override
	public void main_method() {
		this.all = new ArrayList<ArrayList<String>>();

		int w = 0;
		while (w < this.menus.length) {
			this.sb.append(menus[w][0] + "." + menus[w][1] + "-" + menus[w][2] + " | ");
			this.arr_method(this.menus[w]);
			this.all_method();
			w++;
		} // System.out.println(this.all);
		this.menu_select();
	}

	private void menu_select() {
		this.sc = new Scanner(System.in);
		System.out.println("메뉴를 선택하세요 : " + this.sb);

		this.user = this.sc.next();
		try {
			int usermenu = this.sc.nextInt();

			System.out.println("해당 메뉴의 갯수을 입력하세요 :");
			int userea = this.sc.nextInt();
			if (usermenu > 0 || usermenu <= this.all.size()) {
				int total = Integer.parseInt(this.all.get(usermenu - 1).get(2)) * userea;
				System.out.println("결제하실 총 금액 : " + total + "원 입니다.");
			} else {
				System.out.println("해당 메뉴 번호를 잘못 입력하셨습니다.");
				kiosk();
			}
		} catch (Exception e) {
			System.out.println("해당 메뉴를 올바르게 선택하세요");
			kiosk();
			new re_java10t_box().menu_select();
		} finally {
			this.sc.close();
		}
	}

	public ArrayList<String> arr_method(String smenu[]) {
		this.arr = new ArrayList<String>(Arrays.asList(smenu));
		return this.arr;
	}

	@Override
	public ArrayList<ArrayList<String>> all_method() {
		this.all.add(this.arr);
		return this.all;
	}

}

 

저작자표시 비영리 변경금지 (새창열림)
'Java' 카테고리의 다른 글
  • Java - Thread
  • Java - interface
  • 응용문제 - 은행
  • 복습10 - Java 응용
9na0
9na0
응애
  • 9na0
    구나딩
    9na0
  • 전체
    오늘
    어제
    • 분류 전체보기 (211)
      • Web (118)
      • Java (28)
      • 데이터베이스 (14)
      • 세팅 (12)
      • 과제 (3)
      • 쪽지시험 (2)
      • 정보처리기사 (4)
      • 서버 (25)
  • 블로그 메뉴

    • 링크

      • 포폴
      • 구깃
    • 공지사항

    • 인기 글

    • 태그

      file24
      file25_t
      spring-boot
      re_java10
      macbook pro m4
      net2
      notice_writer
      Oracle
      net3
      ab1
      java_io1~10
      datalist
      io_dto
      re2
      file25
      exam1_1~10
      net4
      net1
      noticewriteok
      net5~10
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    9na0
    복습11 - Java 응용
    상단으로

    티스토리툴바