Nieskończona pętla wyjątku

0

Napisałem śmieszny program, choć nie jest to jeszcze cały program. Ale coś nie działa jak trzeba. Kod wygląda tak:

class Losowanie {
	private Scanner wczytanaLiczba;
	private int Liczba = 0;

	public Losowanie() {
		wczytanaLiczba = new Scanner(System.in);
	}

	public void start() {
		do {
			wczytajLiczbe();
		} while (Liczba != 3);
	}

	private void wczytajLiczbe() {
		try {
			Liczba = wczytanaLiczba.nextInt();
		} catch (InputMismatchException e) {

			blednyNumer();
		}

	}

	private void blednyNumer() {
		System.err.println("Podano zla wartosc");
	}
} 

public class Test {

	public static void main(String[] args) {
	
		Losowanie losowanie = new Losowanie();
		losowanie.start();
	}

}

Jeśli wpisuje cyfry wszystko działa bez zarzutu. A jak wpiszę coś co nie jest cyfrą np. literki to w nieskończoność wyświetla mi "Podano zla wartosc". A powinno złapać wyjątek InputMismatchException i raz wyświetlić ten tekst. Po czym pytać o kolejną liczbę aż nie zostanie spełniony warunek wczytania liczby 3 z klawiatury. Wie ktoś o co chodzi z tą nieskończoną pętlą i jak naprawić to by zachować podobny układ kodu? Proszę o wparcie.

0

Najpierw pownieneś sprawdzić, czy można odczytać liczbę

wczytanaLiczba.hasNextInt()
1

W obsłudze wyjątku dorzuć wczytanaLiczba.nextLine(); (inaczej stoisz w miejscu i wciąż próbujesz wczytać tę samą wartość)

0

Hrypa
Dzięki pomogło. Teraz działa jak powinno.

bartekbbb napisał(a):

Najpierw pownieneś sprawdzić, czy można odczytać liczbę

wczytanaLiczba.hasNextInt()

Wybacz nie rozumiem. W którym miejscu tą komendę wczytanaLiczba.hasNextInt() mam dać?

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