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
}