Warum ist "while ((String tmp = x))" keine gültige Java-Syntax?

8

Ich habe eine Klarstellung bezüglich eines Java-Codes:

Was ist der Unterschied zwischen diesen Codes, dass einer kompiliert werden kann, während der andere nicht kann.

Ich bin nicht daran interessiert, "wie der Fehler zu beheben", weil ich es bereits gelöst habe, aber mehr auf eine Erklärung über das Problem:

Arbeiten

%Vor%

funktioniert nicht

%Vor%

Die Fehler von Eclipse sind:

Mehrere Markierungen in dieser Zeile:

  • String kann nicht in eine Variable aufgelöst werden
  • Syntaxfehler auf Token "tmp", lösche dieses Token
  • String kann nicht in eine Variable aufgelöst werden
  • Syntaxfehler auf Token "tmp", lösche dieses Token
David H 26.08.2012, 20:30
quelle

3 Antworten

10

JLS §14.12 :

%Vor%

JLS §15.27

%Vor%

JLS §15.26

%Vor%

LeftHandSide kann keine Deklaration sein, ist also nicht erlaubt.

    
Jeffrey 26.08.2012, 20:44
quelle
12

Sie können keine Variable innerhalb eines Ausdrucks deklarieren. (außer für den ersten Teil einer for -Schleife)

    
SLaks 26.08.2012 20:32
quelle
0

Sie mischen für und während der Syntax. Der zweite Block funktioniert nicht, weil Ihre tmp-Variable in einem Condicion deklariert ist.

while((String tmp=scan.next())!=null)

versuche das:

String tmp; while((tmp=scan.next())!=null)

    
user1625893 26.08.2012 20:44
quelle

Tags und Links