Java 为什么我的程序循环次数比需要的多两倍?
我对编程完全陌生,我正在为课堂制作一个程序。对于这个项目,我需要制定一个“自我指导”的计划。我想做一个简单的程序;我想要一个战斗模拟器!因此,该计划的重点是这样做: 介绍你,然后开始战斗。攻击完全是随机的,你和“敌人”战斗,直到你们中的一个达到0点生命。我希望节目结束,展示你和你的敌人的健康状况,告诉你是否赢了。非常简单,但比你想象的要难,尤其是在我所学的编程知识不足的情况下。我只是需要帮助修复或简化它。如果你能帮忙,谢谢你提供的信息!代码如下:Java 为什么我的程序循环次数比需要的多两倍?,java,loops,Java,Loops,我对编程完全陌生,我正在为课堂制作一个程序。对于这个项目,我需要制定一个“自我指导”的计划。我想做一个简单的程序;我想要一个战斗模拟器!因此,该计划的重点是这样做: 介绍你,然后开始战斗。攻击完全是随机的,你和“敌人”战斗,直到你们中的一个达到0点生命。我希望节目结束,展示你和你的敌人的健康状况,告诉你是否赢了。非常简单,但比你想象的要难,尤其是在我所学的编程知识不足的情况下。我只是需要帮助修复或简化它。如果你能帮忙,谢谢你提供的信息!代码如下: import java.util.Scanner
import java.util.Scanner;
public class TG_UN4EX13 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String rumble = "startvalue";
System.out.println("Welcome to the Ultimate Battle Game!");
System.out.println("Have Fun!");
// Attack Section //
int attack1 = 5;
int attack2 = 10;
int attack3 = 20;
int attack4 = 40;
int cower = 0;
// Character Section//
int playerhealth = 100;
// Character Section//
// Enemy Section//
int enemyhealth = 100;
// Enemy Section//
while (playerhealth >= 0 || enemyhealth >= 0 || rumble.equalsIgnoreCase("Yes")) {
int attacknumber = (int) (Math.random() * (5 - 1 + 1) + 1);
int attacknumber2 = (int) (Math.random() * (5 - 1 + 1) + 1);
if (attacknumber == 1) {
enemyhealth = enemyhealth - attack1;
System.out.println("You used Punch!");
System.out.println("You did " + attack1 + " damage! \n");
} else if (attacknumber == 2) {
enemyhealth = enemyhealth - attack2;
System.out.println("You used Kick!");
System.out.println("You did " + attack2 + " damage! \n");
} else if (attacknumber == 3) {
enemyhealth = enemyhealth - attack3;
System.out.println("You used Jab!");
System.out.println("You did" + attack3 + " damage! \n");
} else if (attacknumber == 4) {
enemyhealth = enemyhealth - attack4;
System.out.println("You used Roundhouse Kick!");
System.out.println("You did " + attack4 + " damage! \n");
} else if (attacknumber == 5) {
enemyhealth = enemyhealth - cower;
System.out.println("You cowered in fear!");
System.out.println("You did " + cower + " damage! \n");
}
if (attacknumber2 == 1) {
playerhealth = playerhealth - attack1;
System.out.println("They used Punch!");
System.out.println("They did " + attack1 + " damage! \n");
} else if (attacknumber2 == 2) {
playerhealth = playerhealth - attack2;
System.out.println("They used Kick!");
System.out.println("They did " + attack2 + " damage! \n");
} else if (attacknumber2 == 3) {
playerhealth = playerhealth - attack3;
System.out.println("They used Jab!");
System.out.println("They did " + attack3 + " damage! \n");
} else if (attacknumber2 == 4) {
playerhealth = playerhealth - attack4;
System.out.println("They used Roundhouse Kick!");
System.out.println("They did " + attack4 + " damage! \n");
} else if (attacknumber2 == 5) {
playerhealth = playerhealth - cower;
System.out.println("They cowered in fear!");
System.out.println("They did " + cower + " damage! \n");
}
System.out.println("You have " + playerhealth + " health!");
System.out.println("They have " + enemyhealth + " health! \n");
}
if (playerhealth > enemyhealth) {
System.out.println("You won!");
System.out.println("Do you want to play again?");
rumble = scan.nextLine();
} else {
System.out.println("You lost!");
System.out.println("Do you want to play again?");
rumble = scan.nextLine();
}
if (rumble.equalsIgnoreCase("no")) {
System.out.println("Well, goodbye!");
System.exit(0);
}
}
}
注意:这是一个快速编辑,但下面是一个示例:
你有20个健康!他们有20个健康
你用了刺拳!你造成了20点伤害
他们用了圆踢!他们造成了40点伤害
你有-20的健康!他们没有健康
你用了刺拳!你造成了20点伤害
他们用了圆踢!他们造成了40点伤害
你有-60的健康!他们有-20健康
你输了!你想再玩一次吗
我不确定,但我认为你可能需要改变:
while(playerhealth>=0 | | | enemyhealth>=0 | | |隆隆声。相等信号情况(“是”))
到
while((playerhealth>0&&enemyhealth>0)| |隆隆声。相等信号情况(“是”))
如果运行状况为
=0
,它将再次运行,因此请删除=
,查看循环的条件
while (playerhealth >= 0 || enemyhealth >= 0 || rumble.equalsIgnoreCase("Yes")) {
//do stuff
}
你的意思是,“在下列任何一个条件成立时继续战斗”:
你的意思是,战斗只在玩家和敌人的生命值都为负时结束,还是应该在玩家或敌人的生命值都为负时结束?在使用代码进一步移动之前,请使用IDE工具正确格式化/缩进代码。它现在是不可读的,这有助于隐藏许多小错误。编辑:我设置了您的示例的格式,但以后在您的所有项目中尝试自己进行。此外,您还需要检查每次攻击后的运行状况是否为0,以便您不会被最近死亡的人击中。@Berdesdan您需要测试的原因;-)@这对我来说很有效!非常感谢你!这是一个多么简单的错误,幸运的是我还在学习,这真的很有帮助。