Pętla while i try catch - nie wykonuje się drugi raz po wyskoczeniu wyjątku

Pętla while i try catch - nie wykonuje się drugi raz po wyskoczeniu wyjątku
ZI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

Powiedzmy ze mam cos takiego:

Kopiuj
Scanner in = new Scanner(System.in); 

while(i!=0)
{
     try{
         int i = in.nextInt();
      }
      catch(InputMismatchException ime){
          System.out.print("zły format bla bla");
       }
}

dajmy na to wpisze "s" wyskoczy wyjatek, ale nastepnym razem nie wykonuje sie juz "try", dlaczego?

spartanPAGE
  • Rejestracja: dni
  • Ostatnio: dni
1

Musisz wyczyścić złe wejście przez np in.next()

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
2

Dlatego że nie czytasz dokumentacji?
When a scanner throws an InputMismatchException, the scanner will not pass the token that caused the exception, so that it may be retrieved or skipped via some other method.
http://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html

ZI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

ok dzieki, dopiero sie ucze, nie pomyślałem o dokumentacji :P

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.