我正在尝试为控制台制作一个角色扮演游戏,这是我的第一个项目。
直到现在一切正常,但那里出现了扫描仪问题。在方法fight()中,扫描程序始终会显示一条错误消息,我不理解。
我已经尝试使其成为类变量并多次使用,即使尝试更改变量名称,一切都失败了。
想获得一些帮助,谢谢。
public class RPG {
// CLASS ATTRIBUTES
Player player;
private static Weapon[][] weaponArsenal = new Weapon[4][2];
private static Armor[][] armorArsenal = new Armor[4][2];
private static Enemy[][] enemies = new Enemy[4][2];
private static Skill[] skills = new Skill[7];
//----------------------------------------------------------------------------------------------------------------//
// MAIN
public static void main(String[] args) throws IOException, InterruptedException {
Scanner scan = new Scanner(System.in);
// welcome
System.out.print("Hello Player, welcome to the Console RPG!\nHow can I call you?\n\nUsername:\n>");
String playerUsername = scan.next();
// init weapon / armor / skill / enemy
initWeapon();
initArmor();
initSkill();
initEnemy();
// init player
player = new Player(playerUsername, 100, weaponArsenal[0][0], armorArsenal[0][0]);
// info
System.out.println("...\n\nThis is a great name, " + player.getName() + "!\n" +
"You'll get the beginner equipment at first.\n");
// print info, wait for input clear screen
player.info();
waitForEnter();
clearScreen();
//----------------------------------------------------------------------------------------------------------------//
// tutorial
System.out.println("Let's show you how to play!...\n");
System.out.println("Your first fight is against " + enemies[0][0].getName() + "!");
fight(player, enemies[0][0]);
scan.close();
} // end_main
//----------------------------------------------------------------------------------------------------------------//
// init methods
static void initWeapon(){
// [rarity][weapon]
// default
weaponArsenal[0][0] = new Weapon("Fist", 5, 0);
// common
weaponArsenal[1][0] = new Weapon("Dagger (common)", 8, 50);
weaponArsenal[1][1] = new Weapon("Staff (common)", 12, 80);
// rare
weaponArsenal[2][0] = new Weapon("Dagger (rare)", 15, 120);
weaponArsenal[2][1] = new Weapon("Staff (rare)", 19, 180);
// epic
weaponArsenal[3][0] = new Weapon("Dagger (epic)", 20, 210);
weaponArsenal[3][1] = new Weapon("Staff (epic)", 25, 290);
} // end_initWeapon
static void initArmor(){
// init armor
// default
armorArsenal[0][0] = new Armor("Cloth", 3);
// common
armorArsenal[1][0] = new Armor("Leather (common)", 5);
armorArsenal[1][1] = new Armor("Bronze (common)", 8);
// rare
armorArsenal[2][0] = new Armor("Leather (rare)", 10);
armorArsenal[2][1] = new Armor("Bronze (rare)", 13);
// epic
armorArsenal[3][0] = new Armor("Leather (epic)", 15);
armorArsenal[3][1] = new Armor("Bronze (epic)", 20);
} // end_initArmor
static void initSkill(){
} // end init_Skill
static void initEnemy(){
// enemies[difficulity][level]
// baby
enemies[0][0] = new Enemy("Goblin Baby", 100, weaponArsenal[0][0], armorArsenal[0][0], 5);
enemies[0][1] = new Enemy("Orc Baby", 120, weaponArsenal[1][0], armorArsenal[1][0], 10);
// normal
enemies[1][0] = new Enemy("Goblin Normal", 130, weaponArsenal[0][0], armorArsenal[0][0], 10);
enemies[1][1] = new Enemy("Orc Normal", 150, weaponArsenal[1][0], armorArsenal[1][0], 15);
// hard
enemies[2][0] = new Enemy("Goblin Hard", 160, weaponArsenal[0][0], armorArsenal[0][0], 15);
enemies[2][1] = new Enemy("Orc Normal", 180, weaponArsenal[1][0], armorArsenal[1][0], 20);
// extreme
enemies[3][0] = new Enemy("Goblin Extreme", 190, weaponArsenal[0][0], armorArsenal[0][0], 20);
enemies[3][1] = new Enemy("Orc Normal", 220, weaponArsenal[1][0], armorArsenal[1][0], 25);
} // end_initEnemy
//----------------------------------------------------------------------------------------------------------------//
// other methods
static void fight(Player player, Enemy enemy) { // TO-DO, error code in switch
Scanner scan = new Scanner(System.in);
int cases = 0;
do {
System.out.println("Please make a choice...\n" +
"1: Attack\n" +
"2: Skill\n");
cases = scan.nextInt();
switch(cases){
// case 1: attack, case 2: skill
case 1:
player.attack(enemy);
enemy.attack(player);
}
} while (player.getHp() <= 0 || enemy.getHp() <= 0);
scan.close();
} // end_fight
}
// [...]
我想要具有多个扫描输入的不同方法,但是我总是收到此错误消息:
Exception in thread "main" java.util.NoSuchElementException
at java.base/java.util.Scanner.throwFor(Scanner.java:937)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at RPG.fight(RPG.java:133)
at RPG.main(RPG.java:47)
C:\ Users \ yusuf \ Desktop \ txtRPG>