2016-04-17 14 views
1
public static void harcos1csapatbaHelyez() 
{ 
    for (int i=0 ; i<7 ; i++) 
    { 
     if (ElsoJatekos.elsoJatekosCsapata[i] == 0) 
     { 
      ElsoJatekos.elsoJatekosCsapata[i] = 1; 

      break; //If i dont remove it, it will cause a dead code warning and the for loop will be execute just once! How can I jump out from this loop otherwise? 
     } 
     else 
     { 
      System.out.println("Elérted a maximális csapatlétszámot!"); 
      break; 
     } 
    } 
} 
+1

können Sie die komplette Schleife posten? Die Warnung bezieht sich wahrscheinlich auf den Rest des Codes nach der Pause. –

+2

Warum brechen Sie beide Klauseln if und else ein? Das bedeutet, dass Ihre Schleife nur eine einzige Iteration hat. Warum also eine Schleife? – Eran

+0

Sie erkennen, dass die Schleife genau einmal ausgeführt wird? du brichst in den zwei if-Zweigen davon aus –

Antwort

1

Das Problem ist nicht, dass Sie eine break haben, aber dass Sie zwei von ihnen haben. Beide break s befinden sich in gegenüberliegenden Zweigen einer bedingten if-Anweisung, die zu einer bedingungslosen break führt. Egal, welche Seite der if Ihr Code braucht, es gibt eine break am Ende.

Dies bedeutet, dass die i++-Anweisung aus dem Loop-Header nie ausgeführt wird; das ist dein toter Code.

+0

Oh mein Gott, du hast mir das Leben gerettet, ja, die zweite Pause war unnötig, vielen Dank und Entschuldigung dafür, ein Noob zu sein: D –

+1

@FrigyesVass Kein Grund zur Entschuldigung, das ist keine naheliegende Sache. Java-Compiler verwendet eine Menge von Analyse, um es herauszufinden. Viel Glück mit Ihrem Projekt! – dasblinkenlight

2

Weil i++ nie ausgeführt wird. break innerhalb einer Schleife bedeutet "verlassen Sie die Schleife sofort." Beide Zweige Ihrer if/else haben es, so beide Pause aus der Schleife bei der ersten Iteration und der i++ Teil des for bekommt nie eine Chance zu laufen. Die for Schleife kann auch einfach int i = 0; gefolgt von dem Code derzeit in der Schleife Körper (ohne break; s), wenn Sie nicht beabsichtigen, Schleife.

Vermutlich schleifen Sie aus einem bestimmten Grund, und höchstens ein dieser Blöcke sollte die break haben.

+0

Vielen Dank! –

0

Ihr Code ist unvollständig, aber ich kann immer noch erkennen, wo bei das Problem ist ... Sie haben dies für Schleife und in der es eine if-else ...

wenn Sie genau hinschauen ist etwas Besonderes, dass, wenn sonst:

, wenn die Bedingung erfüllt ist die Schleife zu brechen, aber wenn die Bedingung Sie die Schleife nicht erfüllt brechen ...

das heißt, unabhängig davon, ob dies wahr ist oder nicht ElsoJatekos.elsoJatekosCsapata[i] == 0 Sie wird die Schleife brechen und ALLE, die nach dem if-else geschrieben wird dead-Code ...

Sie nie ausgeführt wird ... ist die IDE intelligent genug, um herauszufinden, dass ...

, dass der Grund ist, warum die IDE beschwert ist ....

public static void harcos1csapatbaHelyez() 
     { 
     for (int i = 0; i < 7; i++) { 
      if (ElsoJatekos.elsoJatekosCsapata[i] == 0) { 
       ElsoJatekos.elsoJatekosCsapata[i] = 1; 
       break; 
      } else { 
       System.out.println("Elérted a maximális csapatlétszámot!"); 
       break; 
      } 

     // 
     // something else here that is dead-code 
     } 

}