[JAVA] switch/case 문을 이용해 점심 메뉴 고르기 (feat. 랜덤함수 )
자바 수업을 듣다가 배가 고파졌습니다
마침 if/else, switch/case/break 문을 배우고 있어
미리 골라놓은 서강대 근처 혼밥 맛집 리스트를 이용하여 응용해보기로 했습니다.
switch문은 정수값을 받아 그에 해당하는 case 이하의 명령을 실행합니다.
// Example
int n=1;
switch(n){
case 0:
System.out.println('0');
case 1:
System.out.println('1');
case 2:
System.out.println('2');
}
이 경우 n의 값이 1이므로 case1, case2 가 실행됩니다.
case 1만 실행하고 싶다면 case 1의 명령문 밑에 break; 를 삽입합니다.
변수당 한가지 명령만 실행하고 싶다면 break 문을 하나씩 다 넣습니다.
이러한 기능을 활용해 랜덤 점심 뽑기 프로그램을 작성해보겠습니다.
먼저 이클립스에서 랜덤함수를 불러옵니다.
Random 변수명 = new Random; 객체를 생성하고
객체.nextInt(숫자); 를 해주면 숫자만큼의 경우의 수 중 하나의 정수 랜덤값을 반환합니다
* 궁금증. 랜덤함수 반환값은 int만 되나요? 실수형도 되는지?
Random randNum = new Random();
int menu;
menu = randNum.nextInt(15)+1; //0~14의 정수가 반환되기 때문에 +1
System.out.println("랜덤값: " + menu);
랜덤값에 맞는 메뉴가 제대로 출력되는지 보기위해 menu 값도 출력해줍니다.
저는 막판 뒤집기의 짜릿함을 위해 랜덤 값에 +1을 해주었지만, 그런 과정없이 case 0 부터 써도 됩니다.
이제 switch 구문으로 본격적인 메뉴를 구성합니다.
하나의 결과값만 얻고싶다면 각 케이스마다 break문을 삽입해야합니다.
그렇지 않으면 점심메뉴를 여러 개 추천받는 불상사(;;)가 생길 수 있습니다.
switch (menu) {
case 1:
System.out.println("고유식당");
break;
case 2:
System.out.println("벌떼식당");
break;
case 3:
System.out.println("뜸들이다");
break;
case 4:
System.out.println("KFC");
break;
case 5:
System.out.println("신촌설렁탕");
break;
case 6:
System.out.println("별당김치찜");
break;
case 7:
System.out.println("마포식당쌈밥");
break;
case 8:
System.out.println("홍원");
break;
case 9:
System.out.println("큰맘할매순대국");
break;
case 10:
System.out.println("써브웨이");
break;
case 11:
System.out.println("KD케밥하우스");
break;
case 12:
System.out.println("소구장 떡볶이");
break;
case 13:
System.out.println("돈부리모노");
break;
case 14:
System.out.println("서강촌뜨기");
break;
case 15:
System.out.println("편의점/한솥");
break;
}
어쩌다보니 신촌 혼밥집을 열 다섯개나 찾았습니다.
클래스를 실행하면
이렇게 단호한 점심메뉴 추천 결과가 나타납니다.
switch 구문은 특정한 규칙이 없거나, 혹은 너무 많은 조건이 있을 때 else/if 대신 유용한 것 같습니다.
break; 와도 짝꿍이라는 점 기억하면 좋을 것 같습니다.
점심은 써브웨이를 먹으러 가겠습니다.