JAVA/소스코드

[JAVA] 8. 조건문 Switch ~ Case

nineDeveloper 2015. 11. 12. 11:23
728x90
반응형

시간이 조금 남는 관계로 조건문 하나 더 추가합니다.

 

보너스로 일단 이게 있어야 더 재밌는거를 할꺼기 떄문에! 

 

숫자를 무작위로 만들어 봅시다. 이런거로 막 업다운 게임, 로또 같은걸 해 볼 수 있겠지요? ㅎㅎ

 

이건 그냥 일단 숙지하고 쓰세요. 다음에 시간 나면 각 Class하나하나 기능들을 나열해 볼까 싶어서요 

 

난수 발생 방법

import java.util.Random;  <-- 필요

 

Random rand = new Random(); // Random의 형태를 가진 객체 rand 생성

int n = rand.nextInt(5);  // rand를 통하여 난수 발생. nextInt(숫자); -> 0부터 숫자보다 작은값 무작위 생성

 

숫자 직접 입력받기

import java.util.Scanner; <-- 필요

 

Scanner sc = new Scanner(System.in); // Scanner의 형태를 가진 객체 sc 생성

int n = sc.nextInt(); // nextInt()는 숫자를 입력받겠다는 겁니다. 콘솔창에 직접 숫자를 입력시키시면 됩니당 ^^

 

line_characters_in_love-1 

 

 

자 이번에는 if문에서 추가로 비교하는 방법들을 나열해 볼게요.

일단은 비교 방법들!

 

> : 크다

< : 작다

>= : 크거나 같다

<= : 작거나 같다

== : 같다

! : 반대 true -> false / false -> true

 

그리고 AND, OR 조건

&& : 그리고 

|| : 또는

 

국어 하실 줄 아시면 알꺼라 믿고 디테일 하게 하지는 않아요

 

1. 문자 비교 : 'a' == 'b'  이런식이지요. 혹여나 > 이런기호 써도 된다는점. 아스키코드로 계산해서. 합니다. ㅋㅋㅋ

2. 숫자형 비교 : 그냥 우리가 하는거 그대로 3 > 4, 6==7 ...

3. 문자열 비교 : 이게 키 포인트. 실수 엄청 많이 하는데요. 얘는 일치여부를 == 하면 안되요!!!  "Singo".equals("Singgo") 이렇게 써야되요!!

 

Tip. 혹시 문자열 비교 할 경우 앞에 ""안에는 반드시 값이 존재하는게 들어가야 한다. null 이 들어가면 Error 발생

 

line_characters_in_love-17 

 

서론이 길었네요 이제야 본론에 들어갑니다!!!

 

Switch ~ Case 문!!!!! 얘는 그냥 같은지만 비교하는 if라고 생각하면 이해하기 쉬어요.

머 Switch ~ Case가 더 빠르다고는 하는데,,, 요새는 하드웨어가 잘나와서.. 잘 모르겠으면 if문 쓰세용 ㅎㅎ

 

일단 형태부터 볼까요?

 

1.

switch(x) {

case 비교값 :  break;

case 비교값 :  break;

}

 

2.

switch(x) {

case 비교값 :  break;

case 비교값 :  break;

default : break;

}

 

크게 두 가지네요. 

 

대충 센스가 좀 있으신 분들은 느낌이 오셨을꺼에요 deault 얜 멀까? 

if ~ else if ~ else 에서 맨 마지막 아무것도 아니라면 !!! 이거랑 동일 한거에요  ^^ 

 

샘플소스

public class Exam {

public static void main(String[] args) throws Exception {

char c = 'W';

switch (c) {

case 'W': System.out.println("앞"); break; // 변수명 c의 값이 W면 앞 출력

case 'A': System.out.println("좌"); break; // 변수명 c의 값이 A면 좌 출력

case 'S': System.out.println("뒤"); break; // 변수명 c의 값이 S면 뒤 출력

case 'D': System.out.println("우"); break; // 변수명 c의 값이 D면 우 출력

}

}

}


public class Exam {

public static void main(String[] args) throws Exception {

char c = 'W';

switch (c) {

case 'W': System.out.println("앞"); break; // 변수명 c의 값이 W면 앞 출력

case 'A': System.out.println("좌"); break; // 변수명 c의 값이 A면 좌 출력

case 'S': System.out.println("뒤"); break; // 변수명 c의 값이 S면 뒤 출력

case 'D': System.out.println("우"); break; // 변수명 c의 값이 D면 우 출력

   default : System.out.println("잘못누르셨습니다."); break; // 아무것도 아니라면 출력

}

}

}

 

샘플 소스 보시면 감이 오시려나요??

 

얘는 일단 무조건 같은지만 확인이 가능하다는 점 꼭 !!!!!!!!!!!!!!!!!!!! 기억해주세요

 

그다음 문제가 하나 더 있지요? break; 얘는 멀까? 

if문에서는 if 조건을 하나 실행하고 나면 그 다음꺼는 확인하지 않았지요?

하지만 swtich ~ case 는 다릅니다. break가 없다면 확인은 하지 않지만 끝까지 다음 실행들을 해버려요.

 

public class Exam {

public static void main(String[] args) throws Exception {

char c = 'w';

switch (c) {

case 'w': System.out.println("앞"); 

case 'W': System.out.println("앞"); break;

case 'a': System.out.println("좌"); 

case 'A': System.out.println("좌"); break;

case 's': System.out.println("뒤"); 

case 'S': System.out.println("뒤"); break;

case 'd': System.out.println("우");

case 'D': System.out.println("우"); break;

}

}

}


이렇게 되면 w는 break 가 없으니 계속 내려가 'w', 'W' 두개를 실행하게 되어 앞이 두번 출력됩니당^^

이해는 이제부터 하는거에요!!

과제가 있습니다.

1. 성적이 A 면 참 잘했어요, B 면 잘했어요, C 면 분발하세요, F면 공부좀 해라! 를 출력하세요

2. 숫자를 입력받아요. 12, 1, 2를 입력 받으면 겨울입니다. 3, 4, 5를 입력받으면 봄입니다. 6, 7, 8을 입력 받으면 여름입니다. 9, 10, 11을 입력받으면 가을입니다. 를 출력하세요 ^^ 

3. 난수를 0~6까지 만들어요. 그리고 3이면 출력을 해주세요.

과제는 여기까지입니다.

시간 나시는 분들은 if문으로도 해보시길 추천합니다.

조건문과 반복문은 잘해야되요!

모든건 조건문, 반복문으로 되어 있다해도 과언이 아닙니다!!!!!!!!!!

 

728x90
반응형