Java 对于不工作的循环:";不是一份声明”;

Java 对于不工作的循环:";不是一份声明”;,java,for-loop,error-handling,Java,For Loop,Error Handling,我无法编译那个for循环。我一直在寻找解决办法,但我似乎不太明白这里的错误。 请告知!! 提前向所有人致谢。试试看 if(fightAnswer == true) { System.out.println("Let's do this.\n"); for(dude.speed >= mob1.speed; mob1.defense > 0; mob1.defense = mob1.defense - dude.strength

我无法编译那个for循环。我一直在寻找解决办法,但我似乎不太明白这里的错误。 请告知!! 提前向所有人致谢。

试试看

if(fightAnswer == true) {
        System.out.println("Let's do this.\n");

        for(dude.speed >= mob1.speed; mob1.defense > 0;
            mob1.defense = mob1.defense - dude.strength) {

            Scanner inFight = new Scanner(System.in);
            mob1.showAttributes();
            System.out.println("Continue fighting? (y/n)");
            fightChoice = inFight.hasNext();
            System.out.print("\n");
        }
}

只要
dude.speed
大于
mob1.speed
或者
mob1.defense
大于0,循环就会运行。。。这就是你想要做的吗?

对于(初始化;迭代条件;增量)
查看你的代码,看看它是否符合这个公式。你的
dude.speed>=mob1.speed
的目的是什么?它似乎不是循环的初始化语句。你的意思是说它是某个地方的
if
条件的一部分吗?我的意思是初始化,但我想你是对的。我已经用以下内容替换了foor循环:
for(;mob1.defence>0;mob1.defence=mob1.defence-dude.strength){}
这似乎在某种程度上起了作用,但我不知道将speed语句放在哪里。如果不需要特定的初始化,使用
while
循环可能会更好。
while
工作正常。非常感谢你们的快速回复,非常感谢你们的快速回复。基本上,我希望条件是如果dude.speed>mob1.speed和mob1.defence>0,那么mob1.defence=mob1.defence-dude.strength。最后,块代码将完成小for循环。
for (;;(dude.speed>=mob1.speed||mob1.defense>=0) {
...