如果for循环出现中断,为什么我会收到死代码警告


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的两个分支都有它,所以两个在第一次迭代时都会脱离循环,而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
        }

}

相关内容

  • 没有找到相关文章

最新更新