Avatar
mara
Člen
Avatar
mara:

Prosím mohl by mě vysvětlit tento kód ?
Děkuji

public class Main {

public static void main(String[] args) {
int i = 0;
boolean valid = false;
do {
System.out.prin­tln("Zadejte cislo (v rozsahu int):");
try {
i = readNumber();
valid = true; //cislo je v poradku
} catch (InvalidInputEx­ception ex) {
System.out.prin­tln("Zadal jste neplatne cislo!");
}
} while (!valid);
System.out.prin­tln("Zadal jste cislo: " + i);
}

private static int readNumber() throws InvalidInputEx­ception {
Scanner s = new Scanner(System.in);
try {
return s.nextInt();
} catch (InputMismatchEx­ception e) {
throw new InvalidInputEx­ception(e);
}
}
}

class InvalidInputEx­ception extends Exception {

public InvalidInputEx­ception(Throwa­ble cause) {
super(cause);
}
}

Odpovědět  -1 29.6.2014 17:59
Co na srdci, to na Facebooku
Avatar
mara
Člen
Avatar
mara:

Nechápu spíš této části kódu:
private static int readNumber() throws InvalidInputEx­ception {
Scanner s = new Scanner(System.in);
try {
return s.nextInt();
} catch (InputMismatchEx­ception e) {
throw new InvalidInputEx­ception(e);
}
}
}

class InvalidInputEx­ception extends Exception {

public InvalidInputEx­ception(Throwa­ble cause) {
super(cause);
}
}

Nahoru Odpovědět 29.6.2014 18:03
Co na srdci, to na Facebooku
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na mara
Jan Vargovský:

Načítáš vstup, dokud to není číslo. Pak ti to napíše to číslo, které jsi zadal.

Je to normální metoda, která vytvoří instanci na SCanner a načte další int, pokud to není int, tak vyhodí vyjímku. Ta třída je další typ vyjímky, kterou sis sám vytvořil(okopí­roval). Btw, na zdrojáky je tu speciální tag.

Editováno 29.6.2014 18:09
 
Nahoru Odpovědět  +1 29.6.2014 18:07
Avatar
Michal Vašíček
Tým ITnetwork
Avatar
Michal Vašíček:

Jen mimo téma, je tu tlačítko na kód

a potom budeš psát takto... zůstane ti i formátování

V řádku nad textareou, druhé zprava.

Nahoru Odpovědět  +1 29.6.2014 18:27
Příspěvek může obsahovat stopy arašídů, sarkasmu a sóji.
Avatar
mara
Člen
Avatar
mara:

Děkuji moc a proč tam musí být tady tohle a to

super(cause);

??

class InvalidInputException extends Exception {

public InvalidInputException(Throwable cause) {
super(cause);
}
}
Nahoru Odpovědět 29.6.2014 19:21
Co na srdci, to na Facebooku
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na mara
Jan Vargovský:

Je to tuším volání konstruktoru z té třídy Exception.

 
Nahoru Odpovědět 29.6.2014 19:22
Avatar
mara
Člen
Avatar
mara:

dobře díky moc :)

Nahoru Odpovědět 29.6.2014 19:26
Co na srdci, to na Facebooku
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.