Symulacja gry w pokera.

0

Witam.
Znowu mam problem z danymi wejściowymi (od użytkownika). Mianowicie program zadawał na początku takie zapytania:

 
Podaj liczbę graczy (2-4): 4
Podaj liczbę Botow (0-4): 4
Podaj poziom botow. Zakres (0.0-1.0): 0,1

Później przerobiłem go na coś takiego:

Podaj liczbę graczy (2-4): 4
Podaj liczbę Botow (0-4): 3
Podaj poziom bota nr: 1. Zakres (0.0-1.0): 0,1
Podaj poziom bota nr: 2. Zakres (0.0-1.0): 0,2
Podaj poziom bota nr: 3. Zakres (0.0-1.0): 0,3

Po przeróbce wyskakuje mi dziwny błąd z którym nigdy się jeszcze nie spotkałem i nie wiem jak to rozwiązać.

Podaj liczbę graczy (2-4): 4
Podaj liczbę Botow (0-4): 2
Podaj poziom bota nr: 1. Zakres (0.0-1.0): 0,1
Podaj poziom bota nr: 2. Zakres (0.0-1.0): 0,2
Karta nr 1: 10 Pik
Karta nr 2: Walet Pik
Karta nr 3: Dama Pik
Karta nr 4: Król Pik
Karta nr 5: As Pik
Czy chcesz wymienić jakieś karty? (T/N)
n
Karta nr 1: Exception in thread "main" 2 Karo
Karta nr 2: 3 Trefl
Karta nr 3: 6 Karo
Karta nr 4: 8 Kier
Karta nr 5: Król Pik
Czy chcesz wymienić jakieś karty? (T/N)
java.util.NoSuchElementException: No line found
	at java.util.Scanner.nextLine(Unknown Source)
	at GraczCzlowiek.wymienKartyGracza(GraczCzlowiek.java:20)
	at Stol.wymianaKartGraczy(Stol.java:46)
	at Stol.main(Stol.java:69)

A tu jest kod klasy z błędem:

import java.util.ArrayList;
import java.util.Scanner;


public class GraczCzlowiek extends Gracz{

	public GraczCzlowiek(boolean czyCzlowiek, Uklad uklad){
		super(czyCzlowiek, uklad);
	}
	
	public void wymienKartyGracza(ArrayList<Karta> talia){
		uklad.sortowanieUklad();
		Scanner sc = new Scanner(System.in);
		ArrayList<Integer> kartyDoWymiany = new ArrayList<Integer>();
		for(int i=0;i<uklad.kartyGracza.length;i++){
			System.out.print("Karta nr "+(i+1)+": ");
			uklad.kartyGracza[i].wyswietlKarte();
		}
		System.out.println("Czy chcesz wymienić jakieś karty? (T/N)");
		String odpowiedz = sc.nextLine(); // TU WYWALA BŁĄD
		if(odpowiedz.equals("T") || odpowiedz.equals("t")){
			System.out.println("Podaj jakie karty chcesz wymienić: ");
			while(sc.hasNextInt()){
				kartyDoWymiany.add(sc.nextInt()-1);	
			}
			sc.nextLine();
			System.out.println("Pozbyłeś się kart: ");
			for(int i=0;i<kartyDoWymiany.size();i++){
				uklad.kartyGracza[kartyDoWymiany.get(i)].wyswietlKarte();
				uklad.kartyGracza[kartyDoWymiany.get(i)] = talia.get(0);
				talia.remove(0);
			}
			System.out.println("Twoje obecne karty to: ");
			for(int i=0;i<uklad.kartyGracza.length;i++){
				uklad.kartyGracza[i].wyswietlKarte();
			}
		}
		sc.close();
	}

}

W czym może tkwić problem?

0

Bo nie powinno się wołać nextLine jeśli nie sprawdziło się wcześniej czy hasNextLine...

0

Sprawdziłem czy hasNextLine ale nic to nie dało dalej wywala ten sam błąd.

1 użytkowników online, w tym zalogowanych: 0, gości: 1