【问题标题】:How to break out of an if statement mid way | java如何在中途跳出 if 语句 |爪哇
【发布时间】:2017-03-08 02:11:06
【问题描述】:

我有一个 if 语句(基于回合的攻击),如果有一个简单的方法可以打破 if 语句,这样敌人就不会在它已经死了的情况下反击?

希望不要再做与我已有的相同的 if 语句。在彼此内部拥有两个相同的 if 语句听起来很愚蠢。

我猜,最简单的方法是让 While 循环在 Enemy 死后立即中断。但我不是专家。

while (!monster.isDead() && !player.isDead())
        {
            HashSet<String> input = reader.getInput();

            if(input.contains("attack")) {
                int playerAttack = player.attack();
                int monsterAttack = monster.attack();

                if (monster.getMonsterLiv() > 0) 
                {                   
                    monster.getAttacked(playerAttack);                
                    System.out.println(Utilities.battleString(player.getName(), monster.getMonsterNavn(), playerAttack, monsterAttack, monster.getMonsterLiv()));
                    overView += "\n" + Utilities.battleString(player.getName(), monster.getMonsterNavn(), playerAttack, monsterAttack, monster.getMonsterLiv());

                    player.getAttacked(monster.attack()); 
                    System.out.println(Utilities.battleString(monster.getMonsterNavn(), player.getName(), monsterAttack, playerAttack, player.getHealth()));
                    overView += "\n" + Utilities.battleString(monster.getMonsterNavn(), player.getName(), monsterAttack, playerAttack, player.getHealth());
                } else {
                    monster.getAttacked(playerAttack);                
                    System.out.println(player.getName() + " attacks " + monster.getMonsterNavn() + " for " + playerAttack + " damage, and kills the " + monster.getMonsterNavn());
                    overView += "\n" + player.getName() + " attacks " + monster.getMonsterNavn() + " for " + playerAttack + " damage, and kills the " + monster.getMonsterNavn();
                }
            }
            else if (input.contains("run"))
            {
                player.setGold(player.getGold() - 50);
                break;
            }
            else {
                System.out.println("Unknown word, try \"attack\" or \"run\" instead!");
            }
        }

我这样做的方式可能有点奇怪。也欢迎任何代码格式提示!

【问题讨论】:

  • if (!monster.isDead()) { attack back }

标签: java if-statement while-loop break bluej


【解决方案1】:

如下更改攻击例程的内容:

int playerAttack = player.attack();
int monsterAttack = monster.attack();

monster.getAttacked(playerAttack);
//etc

if (monster.getMonsterLiv() > 0)
{
    player.getAttacked(monster.attack());
    //etc
} else {
    //The monster dies from massive damage!
}

这个想法是你总是将玩家的攻击应用到怪物身上,然后你只在怪物还有生命时才将玩家的攻击应用到怪物身上。

这样你就不必“突破”你的逻辑;下一次循环迭代将自动结束。

【讨论】:

  • 谢谢!我不明白我如何认为在 if 语句中让玩家攻击是个好主意。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-16
  • 1970-01-01
  • 2011-07-28
相关资源
最近更新 更多