해결된 질문
작성
·
224
0
안녕하세요.
switch case(후반전) 강의 3분 30초 부분에서 궁금한 점이 생겨 질문을 남깁니다. 제가 알기로는 switch case를 사용할 때, 그 case에 해당하는 경우에만 수행 동작을 실행하는 걸로 알고 있습니다.
이 영상에서도 마찬가지로 grade를 1이라고 가정할 때, case 1은 조건을 만족하므로 price에 1000을 더해주었습니다. 하지만 그 이후 case 2를 만족하지 않음에도 불구하고 1000을 더해주고, case 3도 만족하지 않지만 1000을 더한 결과 값이 출력 되었습니다.
즉, break를 넣으면 switch문을 빠져나갈 수 있다는 것은 알고 있으나, 왜 break가 없어졌다는 이유로 다음 case의 수행 동작이 실행되는지 잘 모르겠습니다. 이와 관련하여 매커니즘을 조금 더 자세히 설명해주시면 감사할 것 같습니다..!
답변 1
1
안녕하세요?
말씀하신 것처럼 Switch Case 는 대부분의 경우 특정 케이스에 대한 동작만 수행되도록 구현합니다. case 1 의 동작만 수행하거나 또는 case 2 의 동작만 수행하거나 등과 같이 말이죠. Switch Case 문에서 break 의 역할은 Switch Case 문을 탈출하는 것입니다. 그래서 다음과 같이 코드를 작성하게 되면 각 케이스 동작만 수행하고 탈출하는 결과를 얻게 되죠.
int num = 1;
switch (num) {
case 1:
System.out.println("케이스 1 동작");
break;
case 2:
System.out.println("케이스 2 동작");
break;
default:
System.out.println("그 외 동작");
}
그런데 이때 break 가 사라지게 된다면 특정 케이스의 동작을 수행하고 나서 바로 다음줄로 내려가게 됩니다. 이 때는 case 2: 이건 case 4: 건 상관 없이 그저 일반적인 코드가 동작하는 것처럼 위에서 아래 방향으로 순차적으로 수행이 돼요. 만약 앞의 예제에서 case 1: 의 break 문이 빠지면 어떻게 될까요?
int num = 1;
switch (num) {
case 1:
System.out.println("케이스 1 동작");
case 2:
System.out.println("케이스 2 동작");
break;
default:
System.out.println("그 외 동작");
}
num 값이 1일 때 case 1: 에 해당하므로 case 1 의 동작은 올바르게 수행될 것입니다. 그런데 다음 줄에서 break 없으므로 프로그램의 실행 흐름은 바로 밑에 있는 이 코드로 넘어가게 됩니다.
case 2:
System.out.println("케이스 2 동작");
마치 case 2: 는 주석처리 된 것처럼 말이죠.
// case 2:
System.out.println("케이스 2 동작");
그래서 num 값이 1일 때의 실제 동작 흐름은 아래 2문장의 코드를 순차적으로 실행하는 것과 같습니다.
System.out.println("케이스 1 동작");
System.out.println("케이스 2 동작");
정리하면, Switch Case 는 주어진 값에 해당하는 case 를 먼저 찾습니다. 그리고 그 case 의 위치로부터 아래 방향으로 쭉 실행됩니다. 그러다가 break 를 만나면 Switch Case 문을 탈출하게 되고, 만나지 않으면 계속해서 아래 방향으로 내려오면서 모든 문장을 실행하게 됩니다.
다음과 같이 말이죠 😀
switch (값) {
case 1: // 값이 1인 경우, 이 문장부터 break 를 만날 때까지 모든 문장 실행
case 2: // 값이 2인 경우, 이 문장부터 break 를 만날 때까지 모든 문장 실행
case 3: // 값이 3인 경우, 이 문장부터 break 를 만날 때까지 모든 문장 실행
...
}
sallyever 님을 위한 특별한 퀴즈입니다 🎁
학교 선생님들이 시험 문제를 출제하고 있습니다. 총 5개의 문제인데 어떤 문제들은 객관식으로, 또 다른 문제들은 서술형으로 출제하고자 합니다. 아래와 같이 코드를 작성했을 때 실행 결과는 어떻게 될까요? 한 번 머릿속으로 유추하신 다음에 직접 실행하셔서 예상과 맞는지 확인해주세요 😊
for (int i = 1; i <= 5; i ++) {
System.out.print("문제 " + i + " : "); // 문제 1 :
switch (i) {
case 1:
case 2:
case 3:
System.out.println("객관식");
break;
case 4:
case 5:
System.out.println("서술형");
break;
}
}
감사합니다.
내주신 문제의 답은 객관식, 객관식, 객관식, 서술형, 서술형이 되겠네요.
자세한 답변 감사드립니다! 완전하게 이해했어요ㅎㅎㅎ