package tpe.fruh_razzaq_jando.pue1;

import java.math.*;

/**
 * Diese Klasse implementiert einen Bruch
 *
 * @author TPE_UIB_01
 */
public class Bruch {

    // ================================================================================
    // Properties
    // ================================================================================

    private long nenner, zaehler, ganze;

    // ================================================================================
    // Constructors
    // ================================================================================

    Bruch(long zaehler, long nenner) {
        this.zaehler = zaehler;
        this.nenner = nenner;
        kuerze();
    }

    Bruch(long ganze, long zaehler, long nenner) {
        this.zaehler = zaehler;
        this.nenner = nenner;
        this.ganze = ganze;
        kuerze();
    }

    // ================================================================================
    // Accessors
    // ================================================================================

    public long getNenner() {
        return nenner;
    }

    public void setNenner(long nenner) {
        this.nenner = nenner;
    }

    public long getZaehler() {
        return zaehler;
    }

    public void setZaehler(long zaehler) {
        this.zaehler = zaehler;
    }

    public long getGanze() {
        return ganze;
    }

    public void setGanze(long ganze) {
        this.ganze = ganze;
    }

    // ================================================================================
    // Methods
    // ================================================================================

    public Bruch addiere(Bruch zweiterBruch) {
        boolean echt = false;
        Bruch tmpBruch1;
        Bruch tmpBruch2;
        if (this.ganze != 0) {
            echt = true;
            tmpBruch1 = new Bruch(this.ganze, this.zaehler, this.nenner);
        } else {
            tmpBruch1 = new Bruch(this.zaehler, this.nenner);
        }
        if (zweiterBruch.ganze != 0) {
            echt = true;
            tmpBruch2 = new Bruch(zweiterBruch.ganze, zweiterBruch.zaehler, zweiterBruch.nenner);
        } else {
            tmpBruch2 = new Bruch(zweiterBruch.zaehler, zweiterBruch.nenner);
        }
        tmpBruch1.unechterBruch();
        tmpBruch2.unechterBruch();
        System.out.println(tmpBruch1);
        System.out.println(tmpBruch2);
        long zaehler = (tmpBruch1.zaehler * tmpBruch2.nenner) + (tmpBruch2.zaehler * tmpBruch1.nenner);
        System.out.println(zaehler);
        Bruch ergebnisBruch = new Bruch(zaehler, tmpBruch1.nenner * tmpBruch2.nenner);
        ergebnisBruch.kuerze();
        if (echt) {
            ergebnisBruch.echterBruch();
        }
        return ergebnisBruch;
    }


    public void unechterBruch() {
        if (this.ganze != 0) {
            this.zaehler = (this.ganze * this.nenner) + this.zaehler;
            this.ganze = 0;
        }
    }

    public void echterBruch() {
        while (this.zaehler > this.nenner) {
            this.ganze++;
            this.zaehler -= this.nenner;
        }
    }

    private void kuerze() {
        long ggt = getGGT(Math.min(zaehler, nenner));

        this.zaehler = this.zaehler / ggt;
        this.nenner = this.nenner / ggt;
    }

    private long getGGT(long aktuelleZahl) {
        if (zaehler % aktuelleZahl == 0 && nenner % aktuelleZahl == 0)
            return aktuelleZahl;
        else              
            return getGGT(aktuelleZahl - 1);
    }

    @Override
    public String toString() {
        if (ganze == 0)
            return zaehler + "/" + nenner;
        else if (zaehler == 0 && nenner == 0)
            return ganze + "";
        else
            return ganze + " " + zaehler + "/" + nenner;
    }

}

@@ -582,20 +582,17 @@
 ======%0A%0A
-    
+%09
 Bruch(lo
@@ -614,32 +614,146 @@
 g nenner) %7B%0A
-        
+%09%09if (nenner == 0)%0A%09%09%09throw new RuntimeException(%0A%09%09%09%09%09%22Bruch(zaehler, nenner) - nenner darf nicht 0 sein!%22);%0A%09%09else %7B%0A%09%09%09
 this.zaehler
@@ -760,32 +760,27 @@
  = zaehler;%0A
-        
+%09%09%09
 this.nenner 
@@ -789,24 +789,19 @@
 nenner;%0A
-        
+%09%09%09
 kuerze()
@@ -802,27 +802,25 @@
 erze();%0A
-    %7D%0A%0A    
+%09%09%7D%0A%09%7D%0A%0A%09
 Bruch(lo
@@ -854,32 +854,153 @@
 g nenner) %7B%0A
-        
+%09%09if (nenner == 0)%0A%09%09%09throw new RuntimeException(%0A%09%09%09%09%09%22Bruch(zaehler, nenner, ganze) - nenner darf nicht 0 sein!%22);%0A%09%09else %7B%0A%09%09%09
 this.zaehler
@@ -1007,32 +1007,27 @@
  = zaehler;%0A
-        
+%09%09%09
 this.nenner 
@@ -1036,24 +1036,19 @@
 nenner;%0A
-        
+%09%09%09
 this.gan
@@ -1059,24 +1059,19 @@
  ganze;%0A
-        
+%09%09%09
 kuerze()
@@ -1072,20 +1072,21 @@
 erze();%0A
-    
+%09%09%7D%0A%09
 %7D%0A%0A    /
@@ -3345,24 +3345,121 @@
      %7D%0A    %7D
+%0A    %0A%09public double getDezimalzahl() %7B%0A%09%09return ganze + ((double) zaehler / (double) nenner);%0A%09%7D
 %0A%0A    privat

Update Bruch.java