본문 바로가기

LECTURE/# java basic

[초급 JAVA]자바 제어문 - switch ~ case ~ break 제어문

반응형

자바 제어문  - switch ~ case ~ break 제어문


Programming

 
ExamSwitch.java
package exam_control_statements;
public class ExamSwitch {
public static void main(String[] ar) {
// 두번째로 배울 제어문은 Switch ~ case ~ break 문입니다.
// switch는 특정한 수나 문자에대한 위치 이동을 제어할 수 있습니다.
// if문에 비해 수치나 문자에 따른 이동의 처리가 빠릅니다.
/* 형식 */
// switch(수치(연산식도 포함) or 문자){
// case 수치 or 문자 : 내용 ; break;
// case 수치 or 문자 : 내용 ; break;
// case 수치 or 문자 : 내용 ; break;
// default : 내용
// }
int a = 10;
int b = 20;
switch (a + b) {
case 30:
System.out.println("a와 b의 합은 30이다.");
break;
case 10:
System.out.println("a는 10이다.");
break;
case 20:
System.out.println("b는 20이다.");
break;
default:
System.out.println("만족한 답은 없습니다.");
}
System.out.println();
// Switch문은 case에서 답을 찾고 해당 내용을 break을 만나기 전까지 모두 실행합니다.
// 그렇다면 break;을 안쓰면 어떻게될까요?
switch (a + b) {
case 30:
System.out.println("a와 b의 합은 30이다.");
case 10:
System.out.println("a는 10이다.");
case 20:
System.out.println("b는 20이다.");
default:
System.out.println("만족한 답은 없습니다.");
}
System.out.println();
// a+b 의 답이 30이므로 switch문은 30에 해당하는 case를 찾고 내용을 실행하지만 break이 없기때문에 끝나지않고 밑에 내용 모두를 실행합니다.
// 이 성질은 버그가 아니고 응용해서 잘 쓰면 괜찮은 코딩이 되기도 합니다.그러나 위 코딩은 default에 정의된 내용까지 출력이 되니 잘못된 코딩이됩니다.
// case 20에 break을 줘 봅시다.
switch (a + b) {
case 30:
System.out.println("a와 b의 합은 30이다.");
case 10:
System.out.println("a는 10이다.");
case 20:
System.out.println("b는 20이다.");
break;
default:
System.out.println("만족한 답은 없습니다.");
}
// 실행하면 a와 b의 합뿐 아니라 a가 무엇인지 b가 무엇인지도 같이 출력해주니 코딩의 길이를 줄일 수 있습니다.
// 일반적인 경우에는 그냥 분기 시키는 역할로 switch를 쓰지만 break으로 흐름을 제어하여 코딩 수 있으므로 잘 활용해 봅시다.
}
}

여러개의 조건을 판단해야 하는 상황이 생겼다고 치면, 전 시간에 배운 if문을 여러개 쓰면 해결되지만, switch문이라는 것을 쓰면 좀더 간결하고 빠르게 코딩 할 수 있습니다. c언어에서도 switch문이 있지만, c언어와 다른점은 조건으로 문자열을 넣을 수 있다는 점입니다. 

1
2
3
4
5
switch("commin"){
case "java" : System.out.println("java");break;
case "commin" : System.out.println("commin");break;
case "coding" : System.out.println("coding");break;
}
cs

switch문을 잘 쓰면 여러곳에서 응용이되니 꼭 실습하시고 익혀두시길 바랍니다.


Closing

소스는 모두 올려놓았습니다. github 링크는 나중에 좀더 자료가 많아지면 수정해서 올려놓도록하겠습니다. 일단 copy&paste를 해서 결과를 눈으로 확인하시고 설명을 보면서 직접 코딩을 해보세요. 대부분의 설명은 소스안에 주석에 써놓았으니, 주석을 참고하여 설명을 봐주세요.



반응형