如果 for 循环中断,为什么我会收到死代码警告?
Why i get dead code warnig if there is a break in the for loop?
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
在一个循环中意味着 "leave the loop immediately." 你的 if
/else
的两个 分支都有它,所以 both 在第一次迭代时跳出循环,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
}
}
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
在一个循环中意味着 "leave the loop immediately." 你的 if
/else
的两个 分支都有它,所以 both 在第一次迭代时跳出循环,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
}
}