ocajp 자격증 (Oracle Certified Associate Ja

ocjap 문제 및 해설 - Switch Case 78

xemaker 2020. 3. 2. 19:43
public class Switch78 {
	public static void main(String[] args) {
		int wd=0;
		String days[]= {"sun","mon","wed","sat"};
		for(String s:days) {
			switch(s) {
				case "sat":
				case "sun":
					wd-=1;
					break;
				case "mon":
					wd++;
				case "wed":
					wd+=2;
			}
		}
		System.out.println(wd);
	}
}

 

What is the result?

A. 3

B. 4

C. -1

D. Compilation fails.

 

정답: A

결과:

3

해설:

아래처럼 찍어보면 이해가 쉽다. switch case를 쓸때 주의할 점이 break가 없는 case에서는 아래 case가 그대로 실행된다는 점이다.

public class Switch78 {
	public static void main(String[] args) {
		int wd=0;
		String days[]= {"sun","mon","wed","sat"};
		for(String s:days) {
			System.out.println("s="+s);
			System.out.println("Before wd="+wd);
			switch(s) {
				case "sat":
					System.out.println("wd at sat="+wd);
				case "sun":
					wd-=1;
					System.out.println("wd at sun="+wd);
					break;
				case "mon":
					wd++;
					System.out.println("wd at mon="+wd);
				case "wed":
					wd+=2;
					System.out.println("wd at wed="+wd);
			}
			System.out.println("After wd="+wd);
			System.out.println();
		}
		System.out.println(wd);
	}
}

 

결과:

s=sun
Before wd=0
wd at sun=-1
After wd=-1

s=mon
Before wd=-1
wd at mon=0
wd at wed=2
After wd=2

s=wed
Before wd=2
wd at wed=4
After wd=4

s=sat
Before wd=4
wd at sat=4
wd at sun=3
After wd=3

3

 

해설:

switch case를 쓸때 주의할 점이 break가 없는 case에서는 아래 case가 그대로 실행된다는 점이다.