2012-09-21 12 views
6

Pregunta realmente simple, pero no puede resolver esto. ¿Por qué calcula y 2 en el código (Java) a continuación?Declaración de cambio de Java con + =/- = operadores

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

¿Es esta su tarea? (http://meta.stackexchange.com/questions/18242/what-is-the-policy-here-on-homework) – Javier

Respuesta

5

cae a través de la caja 4 a 6 caso al valor predeterminado, por lo que se incrementa (nuevo valor: 3), decrementos por 2 (nuevo valor: 1) y luego incrementos (nuevo valor: 2).

El compilador debería haberle advertido sobre la caída, al menos si usa -Xlint. Nunca ignore las advertencias del compilador de forma inmediata y compile siempre con -Xlint :)

2

No agregó roturas después del caso. Entonces ejecuta todas las declaraciones. y = y + 1-2 + 1; 2

sentencia switch debe ser -

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

entonces Y habría 3

3

Usted se olvidó de agregar break:

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

En una sentencia switch todos los casos por debajo del primer caso coincidente se ejecutará a menos que agregue una declaración break;.

Si esperas Y que se 1 que tiene que hacer:

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