首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果for循环有中断,为什么我会得到死代码warnig?

如果for循环有中断,为什么我会得到死代码warnig?
EN

Stack Overflow用户
提问于 2016-04-17 11:16:09
回答 3查看 377关注 0票数 1
代码语言:javascript
复制
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;
        }
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-17 11:22:23

问题不是你有一个break,而是你有两个。这两个break都位于条件if语句的相反分支中,这相当于无条件的break。无论您的代码使用哪个方面的if,在最后都会有一个break

这意味着循环头中的i++语句永远不会被执行;这是您的死代码。

票数 1
EN

Stack Overflow用户

发布于 2016-04-17 11:20:42

因为i++从未被执行过。循环中的break意味着“立即离开循环”。是您的if/else的两个分支都有它,因此在第一次迭代时都会从循环中分离出来,fori++部分永远也没有机会运行。如果您不打算循环,那么for循环也可以是简单的int i = 0;,后面跟着当前循环体中的代码(没有break;)。

想必,您正在循环是有原因的,最多只有其中一个块应该有break

票数 2
EN

Stack Overflow用户

发布于 2016-04-17 11:32:30

你的代码是不完整的,但我仍然可以确定问题在哪里.你有这个循环,里面有一个if-.

如果你仔细观察,你会发现其中有一些特别之处:

如果满足了条件,就会中断循环,但是如果不满足条件,则也会中断循环.

这意味着,无论这是真的还是非ElsoJatekos.elsoJatekosCsapata[i] == 0,您都会中断循环,并在if -变成死代码之后编写ALL .

你永远不会被处决..。IDE很聪明能弄明白..。

这就是IDE抱怨的原因.

代码语言:javascript
复制
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
        }

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36675771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档