Witam.
Mam problem z pewnym prostym programikiem, który piszę aby ćwiczyć swoje pączkujące umiejętności programowania w Javie.
Program składa się z dwóch klas:
- Ulamek
- Test
Pierwsza z klas, służy do tworzenia obiektów przechowujących ułamki zwykłe (w formacie licznik/mianownik), oraz umożliwia wykonywanie na nich prostych operacji arytmetycznych.
Drugi to oczywiście tylko klasa testowa, służaca do sprawdzania poprawności działania klasy Ułamek.
Kod klasy Ułamek wygląda tak:
public class Ulamek{
int licznik, mianownik;
int cal = licznik/mianownik;
Ulamek(int a, int b){
licznik = a;
mianownik = b;
}
void pomnoz(Ulamek u){
licznik*=u.licznik;
mianownik*=u.mianownik;
}
void dodaj(Ulamek u){
licznik = licznik * u.mianownik + mianownik * u.licznik;
mianownik*=u.mianownik;
}
double getWartosc(){
return (double)licznik/mianownik;
}
double getCzesccalkowita(){
return cal;
//return licznik/mianownik;
}
void wyswietl(){
System.out.println("Ulamek: "+licznik+"/"+mianownik+"\nWartosc: "+getWartosc()+"\nCzesc calkowita: "+getCzesccalkowita());
}
}
Moje pytanie brzmi - Dlaczego część całkowitą mogę uzyskać jako bezpośredni wynik działania metody, ale już nie jako wynik działania przypisany do zmiennej cal? Przy próbie zainicjowana zmiennej cal działaniem licznik/mianownik (zarówno z rzutowaniem (int), jak i bez niego), kompilator wyrzuca mi bład:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Ulamek.<init>(Ulamek.java:3)
at Test.main(Test.java:3)
Może ktoś wie w czym tkwi problem?