takze ak spravne citam zadanie tak to mas mat v dvoch triedach, jednoduchsie by si to mal s integermi ale ked to chces s double tak s dobule
Main trieda:
Kód: Vybrať všetko
package delenie;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
try{
System.out.print("Zadaj prve cislo:");
double a = sc.nextDouble();
System.out.print("Zadaj druhe cislo:");
double b = sc.nextDouble();
System.out.println("Podiel zadanych cisel je: "+Delenie.DelCisla(a, b));
}catch(ArithmeticException ex){
System.out.println("Delis nulou");
}catch(InputMismatchException ex){
System.out.println("Zadal/a si nesprávne hodnoty.");
}
}
}
trieda Delenie:
Kód: Vybrať všetko
package delenie;
public class Delenie {
public static double DelCisla(double a, double b) throws ArithmeticException{
if(b==0)
throw new ArithmeticException("Divide by 0");
return a/b;
}
}
V tejto triede pouzivam throw new ... nakolko ked double typ podelis nulou dostanes Infinity (co pre teba nie je ziadane)
No a ako sa zhruba pracuje s vynimkami.
Mas dve moznosti:
1. try-catch-(finally) blok - je pouzity v Main triede - myslim si ze to sa vola kontrolovana vynimka nakolko ju odchytavas (catch)
pri tomto sposobe priamo urcujes co sa v pripade vynimky stane (napriklad vypises ze je nieco zle)
naco si treba davat pozor:
- ak odchytavas viac druhov vynimiek aby boli v spravnom poradi (v tvojom pripade je to jedno) -> ak je jedna trieda vynimky potomkom druhej tak vzdy daj tu co je potomkom ako prvu
kedy tento typ vynimky pouzit:
- ked potrebujes priamo riadit ako sa ma program spravat v danom pripade (inak povedane ked uz priamo pouzivas metodu ktora moze vynimku hadzat)
2. klauzulu throws za menom metody (pouzite v triede Delenie - metoda DelCisla) - ak som spravne pochopil tak je to nekontrolovana vynimka nakolko len hadzes vynimku
pri tomto sposobe urcis typ vynimky ktory metoda hadze
naco si treba davat pozor:
- len na to aby si dobre urcil vynimku ktoru to ma hodit a pripadne ju identifikoval
kedy tento typ vynimky pouzit:
- ked tvoris metodu ktora je univerzalna, resp. pouzita vo vela miestach v kode
- vzdy ked vyvolanie vynimky moze sposobit viac scenarov
- nikdy nie v Main metode, pokial nie je tym sposobeny pad programu ziadany
Ak nieco nechapes tak sa pytaj.