为什么我的其他声明无法正常工作?

时间:2014-09-12 02:48:27

标签: java while-loop

所以基本上我有一个随机数生成器,如果数字是3,(这是测试的目的),它将会产生"产生"一个怪物,它出现了一个while循环说,虽然怪物的健康是> 0继续重复while循环,它说别的,说你击败了怪物。但出于某种原因,当怪物的健康状况是任何数字时,它一直说你击败了怪物,但仍要求我再做一次攻击。有什么建议吗?

Random dice = new Random();

            for(int counter=1; counter<=3; counter++)
            {
                number = 1+dice.nextInt(3);

                if(number==(3))
                {
                    monster_base_health = 600;
                    monster_base_dmg = 60;
                    System.out.println("A monster appeared!!");

                    while(monster_base_health>0)
                    {
                        System.out.println("Would you like to use 1. Fire Blast, 2. Ice Blast, 3. Void Ray? (Just type 1, 2, or 3)");
                        System.out.println();
                        int attack;
                        attack = input.nextInt();
                        if(attack==1)
                        {
                            monster_base_health = monster_base_health - mage_fire;
                            System.out.println("You used Fire Blast. The Monster now has " + monster_base_health + " health!");
                            System.out.println();

                        }
                        if(attack==2)
                        {
                            monster_base_health = monster_base_health - mage_iceblast;
                            System.out.println("You used Ice Blast. The monster has " + monster_base_health + " health!");
                            System.out.println();
                        }
                        if(attack==3)
                        {   
                            monster_base_health = monster_base_health - mage_voidray;
                            System.out.println("You used Void Ray. The monster has " + monster_base_health + " health!");
                            System.out.println();
                        }   

                    else
                    {
                        System.out.println("You defeated the monster!!!");

                    }
                }

            }

        }

    }

2 个答案:

答案 0 :(得分:1)

修复缩进。这应该表明else里面 while语句,并附加到[仅]最后if。也就是说,else主体会在!(attack == 3)时执行每个循环。

然后解决方法是移除else并将其直接放置在之后 while,它仅在循环结束后运行,因为怪物已被杀死。

答案 1 :(得分:0)

现在,你有两个if语句和一个if-else。为了澄清这个东西是如何工作的,它将检查第一个if语句attack == 1,如果它是真的那么它将执行这个块,然后它将检查第二个if语句attack == 2。当攻击为1时它将是错误的,然后它将检查第三个if语句attack == 3它是否也为假,但是这个if语句有一个else块,所以else块将被执行并且它将打印,{{ 1}}。

要更正您的逻辑,您需要使用You defeated the monster。尝试类似的事情,

Nested if-else

在这个逻辑中,只有当所有三个if语句都为假时才会执行else块。