2012-09-21 12 views
6

Naprawdę proste pytanie, ale nie mogę tego zrozumieć. Dlaczego y obliczyć do 2 w kodzie (Java) poniżej?Oświadczenie Javy z + =/- = operatorami

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

Jest to praca domowa? (http://meta.stackexchange.com/questions/18242/what-is-the-policy-here-on-homework) – Javier

Odpowiedz

5

Wchodzi przypadku przez od 4 do korpusu 6 do domyślnego tak inkrementuje (nowej wartości: 3), i zmniejszony, przez 2 (nowe wartości: 1), a następnie zwiększa (nowa wartość 2).

Kompilator powinien był Cię ostrzec przed upadkiem, przynajmniej jeśli użyjesz -Xlint. Nigdy nie ignoruj ​​ostrzeżeń kompilatora odręcznie i zawsze kompiluj z -Xlint :)

2

Nie dodałeś po wypadku przerwy. Wykonuje więc wszystkie instrukcje. y = y + 1-2 + 1; 2

switch powinien być -

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

Wtedy y byłyby 3

3

zapomniałeś dodać break:

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

W instrukcji switch wszystkie przypadki poniżej pierwszym przypadku dopasowania zostanie wykonane, chyba że dodasz instrukcję break;.

Jeśli oczekujesz y być 1 trzeba zrobić:

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