본문 바로가기
혼자서 개발새발

카페 앱, 한글로 주문해보자(Arrays.asList().cotains(), .equals())

by 휴일이 2022. 9. 5.

저번에 만든 카페 주문 앱은 

번호를 넣으면 주문 완료

 

그런데

여기에서 한글로 "아메리카노"라고 입력해도, "1"이라고 입력해도

주문이 된다면 어떨까?

 

생활코딩에서 본

변수.equals(변수)

요것을 너무 써먹어보고 싶었다 ㅋㅋㅋㅋ

그래서 패기롭게 도전!

 

일단 저번에 배운 배열을 써먹고,

음료이름.equals(사용자입력값)도 써먹었다

 

if(내가 입력한 값이 배열에 있다면?) { 여기가 실행되라 }

이게 가장 어려워서 구글을 서치해봤는데

Arrays.asList(배열).contains(입력값)

이게 가장 알맞는 거 같더라!!

 

이상하게 하나 고치면 여기가 실행안되고 어쩌구 해서

좀 많이 헤맸었음 ㅋㅋㅋ

 

 

<열심히 고친 코드>

import java.util.*;

public class CafeApp4 {

	public static void main(String[] args) {

		int point = 0;
		int cardNB = 0;
		String[] drinks = {"아메리카노", "스무디", "캐모마일"};
		String[] drinksN = {"1","2","3"};
		String[] gesan = {"카드", "현금"};
		String[] gesanN = {"1", "2"};
		
		Scanner cafe = new Scanner(System.in);
		
		
		
	//	while(true) {
			System.out.println("휴일 카페에 오신 걸 환영해요!");
			System.out.println("1 아메리카노");
			System.out.println("2 스무디");
			System.out.println("3 캐모마일");
			System.out.print("주문할 메뉴의 번호나 이름을 입력하세요>");
			
			String numMenu = cafe.nextLine();
	//		menu = Integer.parseInt(numMenu);
			
			if(Arrays.asList(drinks).contains(numMenu) || Arrays.asList(drinksN).contains(numMenu)) {	
			System.out.println("카드입니까 현금입니까?");
			System.out.println("1 카드");
			System.out.println("2 현금");
			System.out.print("번호나 이름입력>");
			
			String pay = cafe.nextLine();
//			card = Integer.parseInt(pay);
			
			if(pay.equals(gesan[0]) || pay.equals(gesanN[0])) {
				System.out.print("카드 번호를 입력하세요>");
				
				String cardNum = cafe.nextLine();
			//	card = Integer.parseInt(cardNum);
				cardNB = Integer.parseInt(cardNum);
				
				System.out.print("적립 번호를 입력해주세요.(12345678)>");
				String poin = cafe.nextLine();
				point = Integer.parseInt(poin);
			
				
			} else if(pay.equals(gesan[1]) || pay.equals(gesanN[1])) {
				System.out.print("적립 번호를 입력해주세요.(12345678)>");
				
				String Poin = cafe.nextLine();
				point = Integer.parseInt(Poin);
				
			}  while(true) {
	 if((numMenu.equals(drinksN[0])||numMenu.equals(drinks[0]))  && (pay.equals(gesan[0])) || (pay.equals(gesanN[0]))) {
		System.out.println(" === 영수증 === ");
		System.out.println("주문하신 메뉴는 "+drinks[0]+"입니다");
		System.out.println("카드번호 : "+cardNB);
		System.out.println("적립번호 : "+point);
		System.out.println("이용해주셔서 감사합니다!");
		break;
		
		} else if((numMenu.equals(drinksN[0])||numMenu.equals(drinks[0])) && pay.equals(gesan[1]) || (pay.equals(gesanN[1]))) {
			System.out.println(" === 영수증 === ");
			System.out.println("주문하신 메뉴는 "+drinks[0]+"입니다");
			System.out.println("현금결제 하셨습니다");
			System.out.println("적립번호 : "+point);
			System.out.println("이용해주셔서 감사합니다!");
			break;

		}	 else if((numMenu.equals(drinksN[1])||numMenu.equals(drinks[1])) && pay.equals(gesan[0]) || (pay.equals(gesanN[0]))) {
			System.out.println(" === 영수증 === ");
			System.out.println("주문하신 메뉴는 "+drinks[1]+"입니다");
			System.out.println("카드번호 : "+cardNB);
			System.out.println("적립번호 : "+point);
			System.out.println("이용해주셔서 감사합니다!");
			break;
			
		} else if((numMenu.equals(drinksN[1])||numMenu.equals(drinks[1])) && pay.equals(gesan[1]) || (pay.equals(gesanN[1]))) {
				System.out.println(" === 영수증 === ");
				System.out.println("주문하신 메뉴는 "+drinks[1]+"입니다");
				System.out.println("현금결제 하셨습니다");
				System.out.println("적립번호 : "+point);
				System.out.println("이용해주셔서 감사합니다!");
				break;

		} else if((numMenu.equals(drinksN[2])||numMenu.equals(drinks[2])) && pay.equals(gesan[0]) || (pay.equals(gesanN[0]))) {
		
			System.out.println(" === 영수증 === ");
			System.out.println("주문하신 메뉴는 "+drinks[2]+"입니다");
			System.out.println("카드번호 : "+cardNB);
			System.out.println("적립번호 : "+point);
			System.out.println("이용해주셔서 감사합니다!");
			
			break;
	} else if((numMenu.equals(drinksN[2])||numMenu.equals(drinks[2])) && pay.equals(gesan[1]) || (pay.equals(gesanN[1]))) {
		System.out.println(" === 영수증 === ");
		System.out.println("주문하신 메뉴는 "+drinks[2]+"입니다");
		System.out.println("현금결제 하셨습니다");
		System.out.println("적립번호 : "+point);
		System.out.println("이용해주셔서 감사합니다!");
		
		break;
	}
			 
			
		}
			}
	}
}

 

 

ㅠ_ㅠ죽음의 수정...결과는?

 

한글 입력
번호 입력

 

 

이름을 입력해도 번호를 입력해도

주문이 가능하게 완료!

 

그런데 경우의 수가 너무 많아서

코드가 너무 길어져가지고...

메소드??로 묶으면 좋을 거 같은데

내일은 생활코딩으로 메소드 영상을 보고

한번 고쳐봐야겠다 ㅠ_ㅠㅎㅎ

728x90