while循环没有给我预测结果

时间:2017-03-12 00:14:02

标签: java

我正在开发一个学习java的小项目。我正在努力创建一个循环来完成像战斗体验一样的RPG。循环第一次正常工作,但第二次没有。 这是相关代码

int dummyhp = 10;

int Cweap = in.nextInt();
if (Cweap == 1){
    System.out.println("You pick up the dagger and Lunge at the dummy");

     while(dummyhp >0){
        int Ddamage = (c1.speed-6)*5;

        if (Ddamage <= 4){ 
            System.out.println ("You fall over a chair, luckily you graze the dummy on your way down");
            dummyhp--;
            System.out.println(dummyhp + "hp left");
        }
        else if ( Ddamage == 5){
            System.out.println("you get in a good hit");
            dummyhp = dummyhp - 3;
            System.out.println(dummyhp + "hp left");
        }
        else if (Ddamage > 6)
            System.out.println(" you cut the dummys head clean off" );

        dummyhp = dummyhp-10;
        System.out.println(dummyhp + "hp left");
    }
}

这是我得到的相关输出。

你拿起匕首和瞄准者 你得到了很好的打击 还剩7小时 -3hp离开

我不确定为什么第一次Ddamage变量= 5并且第二次变为大于6。

提前致谢!

2 个答案:

答案 0 :(得分:1)

你没有把大括号放在else-if结构的最后一个else-if语句中,只是为了执行

System.out.println(" you cut the dummys head clean off" );

和整个while循环体执行

dummyhp = dummyhp-10;
System.out.println(dummyhp + "hp left");

导致while循环只执行一次。 如果你想在else-if语句中执行所有这三个语句,你应该在最后一个else的if-if语句中执行此操作 - 如果要执行所有这些语句而不仅仅是执行println()方法。

else if(Ddamage > 6)
{
System.out.println(" you cut the dummys head clean off" );
dummyhp = dummyhp-10;
System.out.println(dummyhp + "hp left");
}

答案 1 :(得分:0)

更改Ddamage的唯一时间是循环开始时。因此,如果您解决(c1.speed-6)* 5&gt; 6,您将知道c1.speed&gt; 7.2。因此,第二次设置Ddamage时,会将其设置为大于7.2的值。很难说出你想要实现的目的是因为我们无法说出c1.speed是什么。