2017-12-01 1 views
-4

Warum bekomme ich Kompilierzeit Fehler als 'sonst' ohne 'wenn'. Kann mir jemand mit Detail erklärenWarum bekomme ich Kompilierzeit Fehler als 'sonst' ohne 'wenn'. Kann mir jemand ausführlich erklären

class Test 
    { 
     public static void main(String[] args) 
     { 
      if(false) 
       if(true) 
        if(false) 
        else 
         System.out.println("1"); 
       else 
        System.out.println("2"); 
      else 
       System.out.println("3"); 
     } 
    } 
+3

Verwenden Sie einfach Klammern und sie gehen weg. – tkausl

+2

was ist 'if (false) else' zu ​​tun? –

Antwort

1

Die innerste if(false) eine Erklärung fehlt. Es sei denn, Sie Klammern verwenden möchten, müssen Sie hinzufügen eine no-op-Anweisung nach dem if:

if(false); 
else 
    System.out.println("1"); 

Oder Sie können Ihre ganze Kette von if s invertieren:

if(true) 
    System.out.println("3"); 
else if(false) 
    System.out.println("2"); 
else if(true) 
    System.out.println("1"); 
0

Es gibt 2 Konzepte, die hier verwendet werden: 1. Wenn Sie keine Klammern für eine If-Anweisung verwenden, berücksichtigt der Compiler nur die nächste Zeile der If-Anweisung als vollständigen If-Block. 2. Sie können eine else-Anweisung nicht allein verwenden. Einfacher ausgedrückt, else-Anweisung kann nur verwendet werden, wenn sie einen If-Block hat.

Für die innerste If-Anweisung, da Sie hier keine geschweiften Klammern verwendet haben, ist 'else' die einzige Anweisung, die ausgeführt wird. Und wir können die else-Anweisung nicht alleine verwenden.

Verwandte Themen