如何在中途跳出 if 语句 | java
How to break out of an if statement mid way | java
我有一个 if 语句(回合制攻击),如果有一种简单的方法可以打破 if 语句,这样敌人已经死了就不会反击了?
希望不要再做一个等于我已有的 if 语句。在彼此内部包含 2 个相同的 if 语句听起来很愚蠢。
我猜最简单的方法是当 Enemy 死亡时让 While 循环爆发。但我不是专家。
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!");
}
}
我这样做的方式可能有点奇怪。也欢迎代码的任何格式提示!
将你的攻击程序的内容更改如下:
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!
}
这个想法是,你总是将玩家的攻击应用到怪物上,然后你只在怪物还有生命的情况下将玩家的攻击应用到怪物上。
这样您就不必 "break out" 您的逻辑;下一次循环迭代会自动结束
我有一个 if 语句(回合制攻击),如果有一种简单的方法可以打破 if 语句,这样敌人已经死了就不会反击了?
希望不要再做一个等于我已有的 if 语句。在彼此内部包含 2 个相同的 if 语句听起来很愚蠢。
我猜最简单的方法是当 Enemy 死亡时让 While 循环爆发。但我不是专家。
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!");
}
}
我这样做的方式可能有点奇怪。也欢迎代码的任何格式提示!
将你的攻击程序的内容更改如下:
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!
}
这个想法是,你总是将玩家的攻击应用到怪物上,然后你只在怪物还有生命的情况下将玩家的攻击应用到怪物上。
这样您就不必 "break out" 您的逻辑;下一次循环迭代会自动结束