Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Java] Problem z try...catch

Ostatnio zmodyfikowano 2018-03-18 17:50
Autor Wiadomość
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();
}

}
P-170075
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 231-1, czyli
2147483647
, zatem jedenastocyfrowa liczba nie zostanie wczytana przez skaner.
P-170078
« 1 »
  Strona 1 z 1