So ich gebe 2 Brüche ein und lasse diese Addieren/Subtrahieren. Ausgegeben werden soll eine rationale Zahl. Hab damit nur ein Problem, wenn der erste Bruch kleiner ist als der zweite spinnt meine Subtraktion und ich erhalte kein Ergebnis.
Code
		
					
				public class Rational {
	private double zaehler;
	private double nenner;
	// Konstruktor
	void rational(double z, double n) {
		zaehler = z;
		nenner = n;
		}
	// Addition
	public Rational addition(Rational bruch2) {
		Rational ergebnis = new Rational();
		ergebnis.zaehler = zaehler * bruch2.nenner + bruch2.zaehler * nenner;
		ergebnis.nenner = nenner * bruch2.nenner;
		return ergebnis.kuerzen();
	}
	// Subtraktion
	public Rational subtraktion(Rational bruch2) {
		Rational ergebnis = new Rational();
		ergebnis.zaehler = zaehler * bruch2.nenner - bruch2.zaehler * nenner;
		ergebnis.nenner = nenner * bruch2.nenner;
		return ergebnis.kuerzen();
	}
	// Ausgabe
	public String toString() {
		String Ausgabe = new String();
		Ausgabe = zaehler + "/" + nenner;
		return Ausgabe;
	}
	// Kürzen
	private Rational kuerzen() {
		double iGrößer, iKleiner, iErgebnis = 0;
		boolean bStart = true;
		Rational ergebniss = new Rational();
		iGrößer = (nenner < zaehler ? zaehler : nenner);
		if (iGrößer == nenner) {
			iKleiner = zaehler;
		} else {
			iKleiner = nenner;
		}
		while (iErgebnis != iKleiner) {
			if (!bStart) {
				if (iKleiner < iErgebnis) {
					iGrößer = iErgebnis;
				} else {
					iGrößer = iKleiner;
					iKleiner = iErgebnis;
				}
			} else {
				bStart = false;
			}
			iErgebnis = iGrößer - iKleiner;
		}
		ergebniss.zaehler = zaehler / iErgebnis;
		ergebniss.nenner = nenner / iErgebnis;
		return ergebniss;
	}
	public static void main(String[] args) {
		Rational bruch1 = new Rational();
		Rational bruch2 = new Rational();
		bruch1.rational(14, 3);
		bruch2.rational(4, 5);
		System.out.println("Ergebnis der Addition beträgt: "
				+ bruch1.addition(bruch2));
		System.out.println("Ergebnis der Subtraktion beträgt: "
				+ bruch1.subtraktion(bruch2));
	}
}
	
			Alles anzeigen
	Ich denke mal das liegt daran das ein negatives Ergebnis nicht ausgegeben werden kann. Wie kann ich das am leichtesten beheben?