如果 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 在第一次迭代时跳出循环,fori++ 部分永远没有机会进入 运行。 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
        }

}