Brüche kürzen

Nein, das ist kein gültiger Code. Einfach so:
Java:
    public Fraction(int numerator, int denominator) {
        this.numerator = numerator;
        this.denominator = denominator;
       
        if(denominator<0){
            this.numerator = -numerator;
            this.denominator = -denominator;
        }
        if(denominator == 0){
            this.denominator = 1;
        }
        shorten();
    }
 
Die beiden sehen in Ordnung aus, add() und divide() sind noch falsch, wobei Du divide() jetzt unter Verwendung von multiply() und reciprocal() schreiben kannst.
 
Ist es so richtig?

Java:
    public Fraction divide(Fraction f) {
        return multiply(this.reciprocal());
    }
    
    public Fraction add(Fraction f) {
        return new Fraction(numerator * f.denominator + denominator * f.numerator, denominator * f.denominator);
    }
 
add ja, divide nicht. Wofür bekommst du denn f übergeben, wenn Du es nicht verwendest?

Außerdem: warum probierst Du es nicht einfach aus?
 
Was soll denn dort in der Ausgabe stehen?
Du kannst doch Code schreiben, der es testet. Du gibst also immer etwas vor, berechnest es mit Deinem Code und schaust dann, ob das Ergebnis richtig ist.

Beispiel: Du erstellst den Bruch 2/-4 und gibst ihn aus: was wäre das erwartete Ergebnis? Was muss ausgegeben werden?

(Der erste wichtige Punkt ist immer, dass die Anforderungen verstanden wurden. Hast du das? Kannst du sagen, was da im Bruch gespeichert sein muss, was danach ausgegeben werden muss?)
 
Sind meine Methoden über shorten() in Ordnung:

Java:
    /**
     * Gibt den Nenner zurueck.
     */
    public int getDenominator() {
        return denominator;
    }

    /**
     * Gibt den Zaehler zurueck.
     */
    public int getNumerator() {
        return numerator;
    }

    /**
     * Gibt den Bruch als Gleitkommazahl zurueck.
     */
    public double toDouble() {
        double fraction = (double)numerator / denominator;
        return fraction;
    }

    /**
     * Gibt einen String im Format
     * "Zaehler/Nenner" zurueck.
     */
    public String toString() {
        String fraction = numerator + "/" + denominator;
        return fraction;
    }

Ich bin mir nicht sicher, weil ich glaube, dass ich bei toDouble() Typcasting verwenden muss, um eine Gleitkommazahl bei der Rechnung mit Ganzzahlen zu erhalten. Kann jemand darüberschauen? Ich habe es mit 2/-4 kontrolliert, aber dann kam diese Fehlermeldung:

Main.java:1: error: class Fraction is public, should be declared in a file named Fraction.java
public class Fraction {
^
1 error

Ich hatte eine Datei namens Fraction.java schon erstellt, aber dieser Fehler kommt trotzdem auf. Deshlab weiß ich nicht, ob es jetzt mit den Brüchen klappen wird oder nicht.
 
Du kannst doch Code schreiben, der es testet.
Aber aufpassen, dass du in deinem Test auch unterschiedliche Fälle und ggf. Grenzfälle testest, sonst kannst du leicht zu einem falschem positivem Ergebnis kommen:
Java:
public class Adder {

    // addiert zwei Werte
    public int add(int a, int b) {
        return a + 2;
    }

    public static void main(String[] args) {
        Adder adder = new Adder();
        // Test der Addition
        System.out.println(adder.add(2,2)); // ergibt 4, scheint zu passen, oder?
        System.out.println(adder.add(2,3)); // ergibt 4, oh - doch nicht...
    }
}
 

Zurück
Oben