Java, problem z wielokrotnym wczytywaniem danych z klawiatury

Java, problem z wielokrotnym wczytywaniem danych z klawiatury
PC
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Witam,
Tak jak temat sugeruje, mam problem z wielokrotnym wczytywaniem danych z klawiatury w Javie.
O to miejsce występowania problemu

Kopiuj
public static void ruchGracza(){
		int ruch = 0; 	
		Scanner odczyt = new Scanner(System.in);
		if (odczyt.hasNext()) { ruch = odczyt.nextInt();  }
		odczyt.close();
      //Tutaj znajduje się ciąg dalszy metody, ale jest to tylko zmiana pobranej liczby na odpowiednie miejsce w tablicy
}

Za pierwszym razem wszystko działa idealnie, ale przy drugim i każdym kolejnym wywołaniu metody ruchGracza() wartość zmiennej ruch wynosi zawsze 0 a gracz nie dostaje możliwości wyboru ruchu. Co mogę z tym zrobić?
Gdy usuwam if (odczyt.hasNext()) to program wyświetla błąd:

Kopiuj
Exception in thread "main" java.util.NoSuchElementException
	at java.util.Scanner.throwFor(Unknown Source)
	at java.util.Scanner.next(Unknown Source)
	at java.util.Scanner.nextInt(Unknown Source)
	at java.util.Scanner.nextInt(Unknown Source)

Z góry przepraszam, jeżeli podobny wątek już istnieje (mi nie udało się takiego znaleźć).
Pozdrawiam i od razu dziękuję za odpowiedź :)

M0
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
1

wywal

Kopiuj
odczyt.close();

a najlepiej przenieś

Kopiuj
Scanner odczyt = new Scanner(System.in);

do metody wywołującej ruchGracza() i przekazuj go do ruchGracza(odczyt)

Kopiuj

    public static void main(String[] args) {
        Scanner odczyt = new Scanner(System.in);
        ruchGracza(odczyt);
        ruchGracza(odczyt);
        ruchGracza(odczyt);
        odczyt.close();
    }

    public static void ruchGracza(Scanner odczyt) {
        int ruch = 0;
        if (odczyt.hasNext()) {
            ruch = odczyt.nextInt();
        }
    }

nazwy metod i zmiennych pisz po angielsku

PC
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Wielkie Dzięki, wszystko poprawione i działa :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.