자바 JAVA - 반복문 (switch 문)
/* 글을 작성하면서 느끼는 것이, 어느 프로그래밍 언어든지 한가지를 제대로 잘 배워두면 다른언어를 배울때 유사한점들이 많아서 처음 프로그래밍 언어를 배울때보다 수월하다는 것 이다. 기초적인 문법들은 겉보기엔 달라보여도 코드만 약간 다를 뿐 파이썬, 자바스크립트, C언어, JAVA 등등 비슷한 점이 되게 많다. 언어를 하나 제대로 배우면 다른 언어로 넘어갈때 수고가 덜하다는게 이런 점에서 나온 말인 것 같다. */
그러면 이번엔 반복문중에 switch 문에 대해 알아보자.
이전에 조건들이 여러개 있을때 else if 문을 사용하면 된다 했는데, 이 switch 문을 사용하면 보다 더 직관적으로 확인하기 쉽게 코드를 짤 수 있다. 예시를 보면서 이해해보자.
33 을 3으로 나누었을때 나머지가 몇인지 출력해주는 코드이다.
case □ : 에서
□ 에 해당하는 부분은 결과값이라고 생각하면 된다.
즉, switch 의 조건 값 num % 3 의 결과값이 □ 에 해당하는 지를 보면 된다.
나머지가 3이라면 case 3 : 에 해당되는 것이다.
그렇다면 break; 는 뭘 의미하는 걸까?
break 뜻 그대로 딱 그 코드 까지만 읽은 뒤, 반복문을 종료시키는 역할을 한다.
이 코드에선 switch의 조건이 case 0 : 에 해당하기때문에 case 0 : 내의 코드대로 "나머지가 0입니다." 를
출력한 뒤에 반복문을 종료시키는 것이다.
그렇다면, 만약 break; 를 안써주게 된다면?
break; 를 안써주고 출력을 해보니 다 출력이 되었다.
여기서 우리가 알 수 있는 건 break; 를 작성해주지 않으면 case 0 : 을 수행한 뒤에
바로 다음 코드인 case 1 : 로 이동해 그 부분을 수행하고 이후에 또 case 2 : 를 수행하는 것이다.
case 가 더 많다면 case가 끝날때까지 출력을 하던가 break; 를 만날때까지 출력을 할것이다.
그러니 원하는 값만 출력을 하게 하고 싶으면 필히 break; 를 작성해주자.
여기서 궁금증이 든다.
만약 조건에 해당하는 값이 case에 없다면??
예를 들어 시험성적에 따라 성적을 부여하는 코드를 짜봤을때 60점이하는 다 F를 주는 코드일때 이 코드는 어떻게 작성해야 할까? 그럴때는 default : 를 사용하자.
다음 코드를 살펴보자.
점수에 따라 성적을 부여하는 코드이다. 점수를 10으로 나눈뒤 해당하는 값에 따라 성적을 부여하는데,
60점이하부터는 다 F 성적을 주면 되기때문에, case 6 다음 case 5, case 4 ... 등을 따로 또 써줄 필요없이
else와 비슷한 역할을 하는 default를 써주면 된다.
쉽게 말하자면, 위에 case에 해당하는 값들을 제외한 값들이 default에 해당한다고 생각하면 된다.
여기서 추가!
case를 나누기는 하지만, 그 출력값들이 같게 나오게 할려면 어떻게 하면될까?
예를들어 A+, A 받은 학생들은 100% 장학금 대상입니다. B, C 학생들은 30% 장학금 대상입니다. 그외는 장학금 대상이 아닙니다. 를 출력해내는 코드를 작성한다면?
바로 코드를 살펴보자.
첫번째 switch문에서는 성적을 출력하지 않고 grade라는 변수에 전달만 해준다.
이후 두번째 switch 문에서는 전달받은 grade에 해당하는 case에 따라 원하는 출력값을 출력한다.
여기서 case "A+" : 다음에 바로 case "A" : 로 넘어 갔는데, 이 경우엔 두 케이스가 동시에 같은 코드를 적용받게 된다.
이런식으로 case를 그룹지어서 코드를 실행시킬 수 있다.
출력해보면 이렇게 정상적으로 출력이 된다.
'프로그래밍언어 > JAVA' 카테고리의 다른 글
자바 JAVA - 반복문 (for 문), 구구단 (0) | 2021.08.21 |
---|---|
자바 JAVA - 반복문 (while 문), 구구단 (0) | 2021.08.21 |
자바 JAVA - 반복문(if, else, else if 문) (0) | 2021.08.19 |
자바 JAVA - 연산자 실습 (0) | 2021.08.19 |
자바 JAVA - 자료형 (0) | 2021.08.19 |