1) Do app/java/pl.umk.fizyka.helloworld dodaj plik (menu kontekstowe, New, Java Class..., Name: "Ulamek", OK) 2) Umieść tam kod klasy Ulamek (poniżej) 3) Zmień metodę nasłuchiwacza przycisku (kod poniżej) ------------------- Plik Ulamek.java ----------------------- package pl.umk.fizyka.helloworld; import android.support.annotation.NonNull; import android.util.Log; class UlamekException extends Exception { public UlamekException(String message) { super(message); } }; class UlamekMianownikRównyZeroException extends UlamekException { public UlamekMianownikRównyZeroException(String message) { super(message); } }; public class Ulamek implements Comparable, Cloneable { private int licznik = 0, mianownik = 1; //public static final Ulamek Zero=new Ulamek(0,1); //public static final Ulamek Jeden=new Ulamek(1,1); //public static final Ulamek Polowa=new Ulamek(1,2); //public static final Ulamek Cwierc=new Ulamek(1,4); /* //nie dla final = const public static Ulamek Zero = null; static { try { Zero = new Ulamek(0,1); } catch(Exception e){ } } */ private static Ulamek twórzZero() //ta metoda nie zglasza wyjątków { try { return new Ulamek(0, 1); } catch (UlamekMianownikRównyZeroException e) { return null; } } //zadanie private static Ulamek twórzPołowę() //ta metoda nie zglasza wyjątków { try { return new Ulamek(1, 2); } catch (UlamekMianownikRównyZeroException e) { return null; } } //zadanie private static Ulamek twórzĆwierć() //ta metoda nie zglasza wyjątków { try { return new Ulamek(1, 4); } catch (UlamekMianownikRównyZeroException e) { return null; } } public static Ulamek zero = twórzZero(); public static Ulamek połowa = twórzPołowę(); public static Ulamek ćwierć = twórzĆwierć(); /* public void set(int alicznik,int amianownik) throws Ulamek_Exception { if (amianownik==0) throw new Ulamek_Exception("Ulamek: Mianownik musi być różny od zera!"); licznik=alicznik; mianownik=amianownik; } public void get(int[] arg) { arg[0]=licznik; arg[1]=mianownik; } public int[] get() { int[] wynik=new int[2]; wynik[0]=licznik; wynik[1]=mianownik; return wynik; } */ //Bean properties public int getLicznik() { return licznik; } public void setLicznik(int licznik) { this.licznik = licznik; } public int getMianownik() { return mianownik; } public void setMianownik(int mianownik) throws UlamekMianownikRównyZeroException { if (mianownik == 0) throw new UlamekMianownikRównyZeroException("Ulamek: Mianownik musi być różny od zera!"); this.mianownik = mianownik; } public Ulamek(int licznik, int mianownik) throws UlamekMianownikRównyZeroException { //try { setLicznik(licznik); setMianownik(mianownik); //} catch (UlamekMianownikRównyZeroException exc) { // throw exc; //} } public Ulamek(int liczba) throws UlamekMianownikRównyZeroException { this(liczba, 1); } public Object clone() throws CloneNotSupportedException { return super.clone(); } //działania arytmetyczne (metody statyczne) public static Ulamek iloczyn(Ulamek u1, Ulamek u2) throws UlamekMianownikRównyZeroException { Ulamek wynik = new Ulamek( u1.getLicznik() * u2.getLicznik(), u1.getMianownik() * u2.getMianownik()); //wynik.uprość(); return wynik; } //zadanie public static Ulamek iloraz(Ulamek u1, Ulamek u2) throws UlamekMianownikRównyZeroException { Ulamek wynik = new Ulamek( u1.getLicznik() * u2.getMianownik(), u1.getMianownik() * u2.getLicznik()); //wynik.uprość(); return wynik; } public static Ulamek suma(Ulamek u1, Ulamek u2) throws UlamekMianownikRównyZeroException { int licznik = u1.getLicznik() * u2.getMianownik() + u1.getMianownik() * u2.getLicznik(); int mianownik = u1.getMianownik() * u2.getMianownik(); Ulamek wynik = new Ulamek(licznik, mianownik); //wynik.uprość(); return wynik; } public static Ulamek zmianaZnaku(Ulamek u) { try { return new Ulamek(-u.getLicznik(), u.getMianownik()); } catch (Exception exc) { //to się nigdy nie może zdażyć Log.wtf("Ulamek", exc.getMessage()); return Ulamek.zero; } } //zadanie public static Ulamek różnica(Ulamek u1, Ulamek u2) throws UlamekMianownikRównyZeroException { Ulamek wynik = new Ulamek( u1.getLicznik() * u2.getMianownik() - u1.getMianownik() * u2.getLicznik(), u1.getMianownik() * u2.getMianownik()); //wynik.uprość(); return wynik; } //funkcje konwertujące public double toDouble() { return licznik / (double) mianownik; } /* porownanie <, >, = */ @Override public int compareTo(@NonNull Ulamek u) { double wynik = toDouble() - u.toDouble(); return (wynik == 0) ? (int) wynik : (int) (wynik / Math.abs(wynik)); } public boolean isEqualTo(Ulamek u) { return compareTo(u) == 0; } public boolean isNotEqualTo(Ulamek u) { return compareTo(u) != 0; } public boolean isLesserThan(Ulamek u) { return compareTo(u) < 0; } public boolean isLesserOrEqualThan(Ulamek u) { return compareTo(u) <= 0; } public boolean isGreaterThan(Ulamek u) { return compareTo(u) > 0; } public boolean isGreaterOrEqualThan(Ulamek u) { return compareTo(u) >= 0; } @Override //nadpisana na Object.toString() public String toString() { return String.valueOf(licznik) + "/" + String.valueOf(mianownik); } public static int nwd(int a, int b) { if (b==0) return a; else return nwd(b, a % b); } public void uprość() throws UlamekMianownikRównyZeroException { /* //NWD int mniejsza = (Math.abs(licznik) < Math.abs(mianownik)) ? Math.abs(licznik) : Math.abs(mianownik); for (int i = mniejsza; i > 0; i--) if ((licznik % i == 0) && (mianownik % i == 0)) { licznik /= i; mianownik /= i; } */ int nwd = nwd(licznik, mianownik); licznik /= nwd; mianownik /= nwd; //znaki if (Math.signum(licznik) * Math.signum(mianownik) < 0) { //na początku zrobić bez signum setLicznik(-Math.abs(getLicznik())); setMianownik(Math.abs(getMianownik())); } else { setLicznik(Math.abs(getLicznik())); setMianownik(Math.abs(getMianownik())); } } public static Ulamek uprość(Ulamek u) throws UlamekMianownikRównyZeroException { Ulamek kopia = new Ulamek(u.getLicznik(), u.getMianownik()); kopia.uprość(); return kopia; } } ------------------- Plik MainActivity.java ----------------------- private View.OnClickListener przyciskListener = new View.OnClickListener() { public void onClick(View arg0) { //etykieta.setText("Hello World!"); //Toast.makeText(getApplicationContext(), "Hello World!", Toast.LENGTH_LONG).show(); Ulamek u = Ulamek.Zero; Toast.makeText(getApplicationContext(), u.toString(), Toast.LENGTH_LONG).show(); } };