Ist es so richtig?
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();
}
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);
}
Aber kam auch das korrekte Ergebnis raus?Bei mir kam kein Fehler raus.
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.Was soll denn dort in der Ausgabe stehen?
/**
* 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;
}
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:Du kannst doch Code schreiben, der es testet.
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...
}
}
Diese Klasse muss auch in genau dieser Datei sein. Und wenn Du den Inhalt nur kopierst, dann muss die alte Datei gelöscht werden.Ich hatte eine Datei namens Fraction.java schon erstellt, aber dieser Fehler kommt trotzdem auf.
Ja, und das machst du in dem Code doch auch. Du kannst es ja mal ohne den cast probieren und schauen, was dann anders ist.Muss ich bei toDouble() typecasten?