Появляется ошибка при повторном вызове nextInt()
При повторном вызове функции nextInt() класса Scanner появляется ошибка:
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.base/java.util.Scanner.nextLine(Scanner.java:1651)
at classesOfDungeonMaster.GameDungeon.ActionsGame.setInputInt(ActionsGame.java:12)
at classesOfDungeonMaster.GameDungeon.GameDungeon.fightOnThePlaceDungeon(GameDungeon.java:22)
at classesOfDungeonMaster.GameDungeon.GameDungeon.startGame(GameDungeon.java:15)
at com.company.Main.main(Main.java:15)
Честно говоря понятия не имею в чем проблема ибо такую ошибку впервые вижу. Пробовал обнулять ссылочную переменную(хотя это делать вообще не надо)
Интерфейс ActionsGame
package classesOfDungeonMaster.GameDungeon;
import java.util.Locale;
import java.util.Scanner;
public interface ActionsGame {
public default int setInputInt(){
int inputNum;
Scanner in = new Scanner(System.in);
in.reset();
System.out.print("Input a number: ");
inputNum = Integer.parseInt(in.nextLine()); //здесь появляется ошибка при повторном вызове
System.out.printf("Your number: %d \n", inputNum);
in.close();
in = null;
return inputNum;
}
}
Класс GameDungeon
package classesOfDungeonMaster.GameDungeon;
import classesOfDungeonMaster.Dungeon.PlacesOfDungeon;
public class GameDungeon implements ActionsGame {
PlacesOfDungeon placesOfDungeon = new PlacesOfDungeon();
public void startGame() {
placesOfDungeon.generateEnemiesList(placesOfDungeon.getEnemiesList()); //список противников
placesOfDungeon.generatePlaceOfDungeon //генерация комнаты
(placesOfDungeon.getEnemiesList(), placesOfDungeon.getPlaceOfDungeon()); //с противником/противниками
placesOfDungeon.registrationHeroes();
placesOfDungeon.GameMessageOfEnemies(); //
placesOfDungeon.GameMessageOfToDoActions();
fightOnThePlaceDungeon();
}
public PlacesOfDungeon fightOnThePlaceDungeon() {
int inputNum;
do {
inputNum = 0;
inputNum = setInputInt();
if (inputNum == 1) {
placesOfDungeon.getPlaceOfDungeon().get(0).setHealthEnemies(placesOfDungeon.
getPlaceOfDungeon().get(0).getHealthEnemies() - placesOfDungeon.
getHeroesList().get(0).getAttackHero());
} else if (inputNum == 2) {
} else {
}
System.out.println((placesOfDungeon.getPlaceOfDungeon().get(0).getHealthEnemies()));
}while (placesOfDungeon.getPlaceOfDungeon().get(0).getHealthEnemies()>=0);
return placesOfDungeon;
}
public void finishGame() {
}
}
Класс Main
package com.company;
import classesOfDungeonMaster.Dungeon.PlacesOfDungeon;
import classesOfDungeonMaster.Enemies.Enemies;
import classesOfDungeonMaster.Enemies.Hobgoblin;
import classesOfDungeonMaster.Enemies.Rider;
import classesOfDungeonMaster.GameDungeon.GameDungeon;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
GameDungeon gameDungeon = new GameDungeon();
gameDungeon.startGame();
}
}