저번에 만든 카페 주문 앱은
그런데
여기에서 한글로 "아메리카노"라고 입력해도, "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
'혼자서 개발새발' 카테고리의 다른 글
Java if문)숫자 세 개중에 중간인 수는 무엇일까? (0) | 2022.09.28 |
---|---|
Java로 로또 당첨 번호와 확률 구하기! (0) | 2022.09.28 |
printf로 출력하는 것? (0) | 2022.09.04 |
카페 주문 앱, 완벽하게 수정 완료 >_< (0) | 2022.09.02 |
배열(Array)에 대해서 알아보다 (0) | 2022.09.02 |