Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 而循环只运行一次。。。(爪哇)_Java_Loops - Fatal编程技术网

Java 而循环只运行一次。。。(爪哇)

Java 而循环只运行一次。。。(爪哇),java,loops,Java,Loops,我只是不明白为什么这个循环只运行一次,但它让我发疯。提前感谢您的帮助 public class Test { public static void main (String [] args) { gladiator fighterA = new gladiator("Maximus", 25, 5, 10, 11, 8, 2, 1, true); gladiator fighterB = new gladiator("Minimus", 22, 8, 12, 10, 8, 4,

我只是不明白为什么这个循环只运行一次,但它让我发疯。提前感谢您的帮助

public class Test
{

public static void main (String [] args)
{
    gladiator fighterA = new gladiator("Maximus", 25, 5, 10, 11, 8, 2, 1, true);
    gladiator fighterB = new gladiator("Minimus", 22, 8, 12, 10, 8, 4, 1, true);

    while(fighterA.getAlive() == true && fighterB.getAlive() == true);
    {
        double userDmg = (fighterA.getAttack() - fighterB.getDefence())*fighterA.getModifier();
        double enemyDmg = (fighterB.getAttack() - fighterA.getDefence())*fighterB.getModifier();
        //System.out.println(userDmg);
        //System.out.println(enemyDmg);
        fighterA.setHp(fighterA.getHp() - enemyDmg);
        fighterB.setHp(fighterB.getHp() - userDmg);
        //System.out.println(fighterA.getHp());
        //System.out.println(fighterB.getHp());
        if(fighterA.getHp() <= 0)
        {
            fighterA.setAlive(false);
        }
        if(fighterB.getHp() <= 0)
        {
            fighterB.setAlive(false);
        }
    }

    System.out.println("The fight is over!");

}
公共类测试
{
公共静态void main(字符串[]args)
{
角斗士fighterA=新角斗士(“Maximus”,25,5,10,11,8,2,1,正确);
角斗士fighterB=新角斗士(“Minimus”,22,8,12,10,8,4,1,真);
while(fighterA.getAlive()==true&&fighterB.getAlive()==true);
{
double userDmg=(fighterA.getAttack()-fighterB.getDefense())*fighterA.getModifier();
double-enemyDmg=(fighterB.getAttack()-fighterA.getDefence())*fighterB.getModifier();
//System.out.println(userDmg);
//System.out.println(enemyDmg);
setHp(fighterA.getHp()-enemyDmg);
setHp(fighterB.getHp()-userDmg);
//System.out.println(fighterA.getHp());
//System.out.println(fighterB.getHp());

如果(fighterA.getHp()使用Eclipse的调试功能:


Mmmmmm,断点。

欢迎使用堆栈溢出!要求人们发现代码中的错误是无效的。你应该使用调试器(或添加打印语句)来隔离问题,然后构造一个。这是因为或
fighterA.getHp()==true没有用。这也是我经常犯的一个错误;)。另外,你应该确保你的类名称中的第一个字符是大写。我不明白你所说的==true是什么意思。我知道你必须使用。=字符串,但在谷歌搜索了很多次之后,我找不到布尔值的等价物。并且使用一些代码结构的一般知识。解决这个问题我们知道这一点在循环中,表达式的总值在某一点上必须为false,因此请看您的表达式。在查看该表达式时,其中一个必须为false“死了,所以检查点的时间顺序与可能发生的时间顺序相反。我更喜欢在调试之前检查桌面代码,因为您往往会发现真正愚蠢的错误。这是一个语法错误。我不知道布尔值被认为是真的,并且不需要==”。