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;
}
}
}
因为i++
从不执行。循环中的break
意味着"立即离开循环"。if
/else
的两个分支都有它,所以两个在第一次迭代时都会脱离循环,而for
的i++
部分永远没有机会运行。如果您不打算循环,for
循环也可以简单地是int i = 0;
,后面跟着循环体中当前的代码(没有break;
s)。
大概,循环是有原因的,并且这些块中最多只有一个应该具有break
。
问题不在于您有一个break
,而在于您有两个。两个break
都位于条件if
语句的相对分支中,这相当于无条件break
。无论您的代码位于if
的哪一边,最后都有一个break
。
这意味着循环头中的i++
语句永远不会被执行;那是你的死密码。
您的代码不完整,但我仍然可以确定问题在哪里。。。你有一个for循环,里面有一个if else。。。
如果你仔细看的话,这里面有一些特别的东西:
如果条件满足,则中断循环,但如果条件不满足,则也中断循环
这意味着无论这是否为真ElsoJatekos.elsoJatekosCsapata[i] == 0
,您都将打破循环,并在if-else之后写入的ALL成为死代码。。。
你永远不会被处决。。。IDE足够聪明,可以发现。。。
这就是IDE抱怨的原因。。。。
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
}
}