Cześć
Piszę program w celu nauki programowania. Postanowiłem zrobić zabezpieczenie na wprowadzane dane (żeby nie wywaliło błędu jeżeli użytkownik nie poda liczby tylko string). Po zrobieniu pętli w której umieściłem try catch, w przypadku wystąpienia wyjątku program zapętla się w nieskończoność, pomimo że moim zdaniem powinien na nowo dać możliwość wprowadzenia danych. Co prawda przy szukaniu znalazłem już dużo prostsze zabezpienienie czyli hasnextint ale nie daje mi spokoju dlaczego ta pętla nie działa tak jak oczekuje.
1 public int poziomTrudnosci()
2 {
3 int ileCyfrowaLiczba = 0;
4 boolean zabezpieczenieInt = true;
5 Scanner scan = new Scanner(System.in);
6 do {
7 try {
8 ileCyfrowaLiczba = scan.nextInt();
9 if (ileCyfrowaLiczba >1 && ileCyfrowaLiczba <5)
10 zabezpieczenieInt = false;
11 else{
12 System.out.println("Podałeś liczbę ze złego zakresu (Przypominam że zakres to od 2 do 4. Spróbój jeszcze raz.");
13 }
14 }catch (Exception e){
15 System.out.println("Nie podałeś liczby całkowitej. Spróbój jeszcze raz");
16 zabezpieczenieInt = false;
17 }
18 }while (zabezpieczenieInt);
19 return ileCyfrowaLiczba;
Jak uruchomię program to jeżeli użytkownik poda liczbę z przedziału 2-4 to działa prawidłowo, Jak poda inną liczbę również działa prawidłowo (wykonuje pętle jeszcze raz) natomiast jak podam stringa jakiegoś to powtarza w nieskończoność komunikat z wiersza 15 zamiast wyświetlić go raz i wrócić do wiersza 6?
vpiotr