package elte.java2_utikalauz5.lang; import java.util.Arrays; /** Törtszámokat kezelő osztály. @link.forrásfájl {@docRoot}/../data/lang/src Tortszam.java @link.letöltés {@docRoot}/../data/lang Tortszam.jar @since Java Útikalauz programozóknak */ public class Tortszam implements Comparable { private long szamlalo; // A tört számlálója private long nevezo; // A tört nevezője public Tortszam(long sz) { // Konstruktor this(sz,1); } public Tortszam(long sz,long n) { // Konstruktor szamlalo = sz; nevezo = n; egyszerusit(); } public String toString() { return String.valueOf(szamlalo) + '/' + String.valueOf(nevezo); } public boolean equals(Object obj) { return (obj != null) && (obj instanceof Tortszam) && (szamlalo * ((Tortszam)obj).nevezo == ((Tortszam)obj).szamlalo * nevezo); } private void egyszerusit() { long a = Math.abs(szamlalo); long b = Math.abs(nevezo); long c; while (b != 0) { c = b; b = a%b; a = c; } if (a!=0) { szamlalo/=a; nevezo/=a; } } public int hashCode() { return (int)nevezo; } public int compareTo(Tortszam t) { return (int)(szamlalo * t.nevezo - t.szamlalo * nevezo); } public static void main(String argv[]) { Tortszam []t = {new Tortszam(2,3), new Tortszam(-1,3), new Tortszam(4,5), new Tortszam(4,6)}; System.out.println("t == "+t[0]+","+t[1]+","+t[2]+","+t[3]); Arrays.sort(t); System.out.println("t == "+t[0]+","+t[1]+","+t[2]+","+t[3]); } }