혼자서 개발새발

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

휴일이 2022. 9. 5. 21:57

저번에 만든 카페 주문 앱은 

번호를 넣으면 주문 완료

 

그런데

여기에서 한글로 "아메리카노"라고 입력해도, "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