2012-09-21 6 views
6

정말 간단한 질문이지만이를 이해할 수는 없습니다. 아래의 (Java) 코드에서 y가 2로 계산되는 이유는 무엇입니까?+ =/- = 연산자를 사용하는 Java switch 문

int x = 2; 
int y = 2; 
switch (x * 2) { 
    case 4: y += 1; 
    case 6: y -= 2; 
    default: y += 1; 
} 
+0

이 숙제인가? (http://meta.stackexchange.com/questions/18242/what-is-the-policy-here-on-homework) – Javier

답변

5

그것은 기본적으로 케이스 (6)를 케이스 (4)로부터 관통 떨어지면, 그래서 증분 (새로운 값 : 3), (2)에 의한 감소율 (새로운 값 : 1) 한 다음 증분 (새로운 값 : 2).

적어도 -Xlint을 사용하는 경우 컴파일러에서 통과에 대해 경고 했어야합니다. 직접 컴파일러 경고를 무시하고 항상 -Xlint으로 컴파일하십시오.

2

대/소문자를 구분하지 마십시오. 그래서 모든 문장을 실행합니다. y = y + 1-2 + 1; 첫 번째 일치하는 경우 아래의 switch 문에서 모든 경우를

int x = 2; 
int y = 2; 
switch (x * 2) { 
    case 4: 
     y += 1; 
     break; 
    case 6: 
     y -= 2; 
     break; 
    default: y += 1; 
} 
3

것 당신은 break를 추가하는 것을 잊었다 - 2

스위치 문은해야한다 break; 문을 추가하지 않으면 실행됩니다. 당신은 Y가 될 것으로 기대하는 경우

1 당신은 할 필요가 :

int x = 2; 
int y = 2; 
switch (x * 2){ 
case 4: y += 1; 
break; 
case 6: y -= 2; 
break; 
default: y += 1; 
} 
1

:

다음
int x = 2; 
int y = 2; 
switch (x * 2) { 
    case 4: y += 1;break; 
    case 6: y -= 2;break; 
    default: y += 1; 
} 

y는 3