2014-12-04 10 views
7
if (year % 4 == 0) 
    int i = 0; 
else 
    int j = 0; 

Die Syntax Fehler, die Ernte in Eclipse auf Grund dieser Codezeile sind:Syntaxfehler in Java

  • Syntaxfehler auf Token "int", löschen Sie dieses Token
  • i nicht aufgelöst werden kann auf eine Variable
  • Syntaxfehler auf Token "int", löschen Sie dieses Token
  • j auf eine Variable
  • Syntaxfehler auf Token "=" nicht aufgelöst werden kann, löschen Dieses Token

Ich habe keine Ahnung, warum das passiert.

Von dem, was ich beobachtet habe, glaube ich, eine int-Deklaration in den if else Konstruktkörper zu setzen, macht es möglich.

Wenn ich erklären, i und j früher in dem Code und dem Lauf das Programm dann der Fehler wie verschwindet:

int i; int j; 
if (year % 4 == 0) 
    i = 0; 
else 
    j = 0; 

Keine Syntaxfehler in diesem Fall. Warum?

+2

Ich schrieb eine Antwort; aber da es geschlossen ist, kann ich nicht. Schau dir die JLS für [die if-Anweisung] an (http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.9), wenn du nach oben gehst, wirst du sehen dass ein 'LocalVariableDeclarationStatement' nur in einem' Block' stehen kann –

Antwort

0

Es ist wahrscheinlich wegen des Umfangs. Wenn i und j innerhalb von if deklariert sind, sind sie außerhalb der if-Anweisung nicht erreichbar. Wenn Sie sie nach draußen deklarieren, ändert sich ihr Umfang.