Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果for循环中断,为什么我会收到死代码警告? public static void harcos1csapatbaHelyez() { 对于(int i=0;i_Java_Dead Code - Fatal编程技术网

Java 如果for循环中断,为什么我会收到死代码警告? public static void harcos1csapatbaHelyez() { 对于(int i=0;i

Java 如果for循环中断,为什么我会收到死代码警告? public static void harcos1csapatbaHelyez() { 对于(int i=0;i,java,dead-code,Java,Dead Code,,因为i++从未执行。break在循环中表示“立即离开循环”if/else的两个分支都有它,因此在第一次迭代时都会跳出循环,而for的i++部分永远没有机会运行。for的循环也可以是int i=0;后跟当前在循环体中的代码(不带break;s),如果不想循环 假设您循环是有原因的,并且这些块中最多只有一个应该有break问题不是您有break,而是您有两个。这两个break都位于条件if语句的相反分支中,这相当于一个非条件所有break。无论的哪一边,如果你的代码是的,最后都会有一个break

,因为
i++
从未执行。
break
在循环中表示“立即离开循环”if/
else
两个分支都有它,因此在第一次迭代时都会跳出循环,而
for
i++
部分永远没有机会运行。for
循环也可以是
int i=0;
后跟当前在循环体中的代码(不带
break;
s),如果不想循环


假设您循环是有原因的,并且这些块中最多只有一个应该有
break

问题不是您有
break
,而是您有两个。这两个
break
都位于条件
if
语句的相反分支中,这相当于一个非条件所有
break
。无论
的哪一边,如果你的代码是
的,最后都会有一个
break


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

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

如果你仔细观察,就会发现if-else中有一些特殊之处:

如果满足条件,则中断循环;如果不满足条件,则也中断循环…

这意味着无论这是真是假,ElsoJatekos.elsoJatekosCsapata[i]==0
您都将打破循环,并在if-else变成死代码后写入的所有

您将永远不会执行…IDE足够聪明,可以发现

这就是IDE抱怨的原因

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;
        }
    }
}
public static void harcos1csapatbaHelyez()
{
对于(int i=0;i<7;i++){
if(ElsoJatekos.elsoJatekosCsapata[i]==0){
ElsoJatekos.elsoJatekosCsapata[i]=1;
打破
}否则{
println(“Elérted a maximális csapatlétszámot!”);
打破
}
//
//这里还有一些死代码
}

}

你能发布完整的循环吗?警告可能与中断后的其余代码有关。为什么你同时中断if和else子句?这意味着你的循环只有一次迭代,为什么要有一个循环?你知道循环只执行一次吗?你在两个if分支中中断了它。你为什么要告诉我们如果您检查的唯一索引是
0
,则创建一个循环?要么删除
else
块中的
中断
,要么删除整个循环并保留
if/else
。您可以在您的问题中添加
ElsoJatekos.elsojatekoscapa
的定义吗?哦,我的上帝,您救了我的命,是的,第二次中断是不必要的,t汉克斯:非常抱歉,我是个笨蛋:D@FrigyesVass没有理由感到抱歉,这一点都不明显。Java编译器使用了大量的分析来解决它。祝您的项目好运!
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
        }