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;
}
}
}
Antwort
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.
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 –
@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
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.
Vielen Dank! –
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
}
}
können Sie die komplette Schleife posten? Die Warnung bezieht sich wahrscheinlich auf den Rest des Codes nach der Pause. –
Warum brechen Sie beide Klauseln if und else ein? Das bedeutet, dass Ihre Schleife nur eine einzige Iteration hat. Warum also eine Schleife? – Eran
Sie erkennen, dass die Schleife genau einmal ausgeführt wird? du brichst in den zwei if-Zweigen davon aus –