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, botów: 0