자판기문제
복습 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;
}
}