[Java] Problem z try...catch
Ostatnio zmodyfikowano 2018-03-18 17:50
adrian.paz Temat założony przez niniejszego użytkownika |
[Java] Problem z try...catch » 2018-03-18 17:19:59 Hejka mam problem z obsługą wyjątku w try..catch. Chce wyłapać dwa wyjątki- zły typ danych(litery zamiast cyfr) i wpisanie więcej liczb niż pomieści tablica. ZAWSZE SPROWADZA WSZYSTKO DO WYJĄTKU INPUTMISMATCH package ćw3; import java.util.InputMismatchException; import java.util.Scanner; public class Zad2 {
public static void main(String[] args) { Scanner skan = new Scanner(System.in); boolean isNotCorrect = true; do { try { System.out.print("Podaj jakąś liczbę naturalną(do 10 cyfr): "); int liczba = skan.nextInt(); int suma=0,ile=0; int wynik; int [] sum = new int[10]; while(liczba!=0) { suma+=liczba%10; sum[ile]=liczba%10; liczba=liczba/10; ile++; } wynik=sum[0]; for(int i=1;i<ile;i++) { if(sum[i]>wynik) { wynik=sum[i]; } } System.out.println("\nSuma cyfr tej liczby wynosi: " + suma); System.out.println("Liczba ta jest złożona z " + ile + " cyfr"); System.out.println("Największa cyfra tej liczby jest równa: " + wynik); isNotCorrect = false; } catch (ArrayIndexOutOfBoundsException b) { System.err.println("Error - Za duża ilość cyfr!"); skan.nextLine(); System.out.print("\nWprowadz dane ponownie! "); } catch (InputMismatchException a) { System.err.println("Error - Złe dane wejściowe!"); skan.nextLine(); System.out.print("\nWprowadz dane ponownie! "); }
}while(isNotCorrect); skan.close(); }
}
|
|
jankowalski25 |
» 2018-03-18 17:50:26 Przecież zgodnie z dokumentacją Scanner.nextInt() nie rzuca wyjątku ArrayIndexOutOfBoundsException. Dopisano:Wróć, nie do końca o to chodziło. Po prostu Integer.MAX_VALUE wynosi 2 31-1, czyli 2147483647 , zatem jedenastocyfrowa liczba nie zostanie wczytana przez skaner. |
|
« 1 » |