Wpis z mikrobloga

#naukaprogramowania #java
Mirki mam taki kod który działa, ale eclipse wyrzuca mi ostrzeżenie, że mogą być wycieki itp. Przeczytałem, że lepiej Scannera dać w nawiasach do try. Zrobiłem tak i mi teraz program nie działa. Tzn. zapętla się w nieskończoność:
"Ilu gier chcesz rozegrac?
Liczba musi byc liczba calkowita wieksza od 0
Ilu gier chcesz rozegrac?
Liczba musi byc liczba calkowita wieksza od 0"
itd.
Różnica w kodach jest tylko taka, że Scanner dałem do nawiasów w try(). Niby program powinien działać tak samo, ale jednak coś jest nie tak. Ktoś mógłby wytłumaczyć dlaczego i jak to naprawić?
  • 9
@Patres: ten throw jest kompletnie zbędny -- w if wypisz komunikat i daj continue, w else daj break. Pozbądź się zmiennej pobranieLiczby i daj while (true). To tak ogólnie, jeśli chodzi o kod. Nie jestem mistrzem Javy, ale mam wrażenie, że Scanner należy utworzyć raz, przed pętlą, i na nim wołać nextInt(), inaczej możesz tracić wejście które nowotworzone Scannery połkną.

Wyjątki są do sytuacji wyjątkowych, np. nagłe zamknięcie połączenia sieciowego czy
@Korem: Przecież to jest to samo co miałem.
@co_to_sie_stanelo: Wydaje mi się, że potrzebuję wyjątków, bo chcę pobrać liczbę i muszę jakoś zareagować gdy wpiszę np. "abc".
@szymy: dane.close(); nie mogę użyć bo wtedy zamykam cały System.in i w innych metodach nie mogę już użyć Skannera. Już tak próbowałem i program mi się wysypuje.
@szymy: O którym kodzie piszesz? O pierwszym czy o drugim ze Scannerem w nawiasach w try (). Jak o pierwszym tonapisałem, że działa tylko jest ostrzeżenie ;) właśnie nie mogę dać close() bo wtedy zamykam dostęp do całego System.in i w innych metodach nie mogę wywołać juz Scannera.