Я пытаюсь создать контрафактную игру про покемонов, но этот сканер не работает.
JavaBattle
объект создается внутри драйвера. В драйвере все работает, а этот код нет. «Циклон», «Вращение Торнадо», «Термал» и «Хафф-н-Пафф» должны работать, но не с первой попытки.
Я действительно не знаю, что мне делать.
import java.util.*;
public class JavaBattle{
private int opponentHealth;
public void fight(){
opponentHealth = 100;
Scanner attackchoice = new Scanner(System.in);
System.out.println("Attacks:\nCylcone\nTornado Spin\nThermal\nHuff 'n Puff");
System.out.println("Choose One:");
String ability = attackchoice.nextLine();
if (!ability.equals("Cyclone")||!ability.equals("Tornado
Spin")||!ability.equals("Thermal")||!ability.equals("Huff 'n Puff")){
System.out.println("Not available. Please Try Again.");
System.out.println("Attacks:\nCylcone\nTornado Spin\nThermal\nHuff 'n Puff");
System.out.println("Choose One: ");
ability = attackchoice.nextLine();
}
int randAttackDamage = (int)(Math.random()*16)+15;
int randOpponentAttack = (int)(Math.random()*21)+10;
System.out.println(ability + " was used." + "("+randAttackDamage+")");
opponentHealth = opponentHealth - randAttackDamage;
System.out.println("Opponents Current Health: " + opponentHealth);
}
}
Вам нужно заменить ваши логические операторы ИЛИ ||
на операторы И &&
. С вашим кодом ваше предложение if
верно только в том случае, если ability
— это все четыре способности одновременно. Вы хотите проверить, не является ли способность ни одной из доступных способностей.
if (!value==1 || !value==2)
всегда будет входить в блокthen
, потому что значение не может быть равно всем этим значениям одновременно. Вместо этого вы хотитеif (!value==1 && !value==2)