我正在开发一个学习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。
提前致谢!
答案 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是什么。