Hallo Leute.
Ich bin neu hier, da mich grade bei einer Aufgabe ein Problem nicht weiterkommen lässt.
Und zwar soll ich eine rekursive Methode erstellen, die auf einem Feld von Fraction-Objekten arbeitet.
Die Klasse Fraction habe ich bereits vorgegeben. Sie sieht wie folgt aus:
Nun soll ich eine Methode mit der Signatur: Fraction count ( Fraction[] arr, int i ) entwerfen, die die Anzahl an durch zwei teilbaren Brüchen zurückgibt.
Nur weiß ich leider überhaupt nicht wie ich das anstellen soll, da Zähler und Nenner ja privat angelegt sind und auch keine Methoden existieren die es mir ermöglichen da dran zu kommen. Oder überseh ich da was?
Ich bin über jede Hilfe dankbar.
MfG
Nils
Ich bin neu hier, da mich grade bei einer Aufgabe ein Problem nicht weiterkommen lässt.
Und zwar soll ich eine rekursive Methode erstellen, die auf einem Feld von Fraction-Objekten arbeitet.
Die Klasse Fraction habe ich bereits vorgegeben. Sie sieht wie folgt aus:
Java:
public class Fraction {
private int numerator; // Zaehler
private int denominator; // Nenner
public Fraction(int num, int denom) {
if (denom != 0) {
if (denom < 0) {
numerator = -num;
denominator = -denom;
} else {
numerator = num;
denominator = denom;
}
reduce();
} else {
// error: division by zero
throw new IllegalArgumentException();
}
}
public Fraction() {
numerator = 0;
denominator = 1;
}
public Fraction(int num) {
numerator = num;
denominator = 1;
}
public String toString() {
return numerator + " / " + denominator;
}
public Fraction changeSign() {
return new Fraction(-numerator, denominator);
}
public Fraction reverse() {
return new Fraction(denominator, numerator);
}
public Fraction add(Fraction other) {
int num = numerator * other.denominator + other.numerator * denominator;
int denom = denominator * other.denominator;
return new Fraction(num, denom);
}
public Fraction subtract(Fraction other) {
int num = numerator * other.denominator - other.numerator * denominator;
int denom = denominator * other.denominator;
return new Fraction(num, denom);
}
public Fraction multiply(Fraction other) {
int num = numerator * other.numerator;
int denom = denominator * other.denominator;
return new Fraction(num, denom);
}
public Fraction divideBy(Fraction other) {
return multiply(other.reverse());
}
public double toDouble() {
return (double)numerator / (double)denominator;
}
public Fraction clone() {
return new Fraction(numerator, denominator);
}
public boolean equals(Fraction other) {
return numerator == other.numerator & denominator == other.denominator;
}
private void reduce() {
if (numerator != 0) {
int gcd = calculateGcd();
numerator /= gcd;
denominator /= gcd;
} else {
denominator = 1;
}
}
public int calculateGcd() {
int value1 = Math.abs(numerator);
int value2 = denominator;
while (value1 != 0 & value2 != 0) {
if (value1 > value2) {
value1 = value1 % value2;
} else {
value2 = value2 % value1;
}
}
if (value1 == 0) {
return value2;
} else {
return value1;
}
}
}
Nur weiß ich leider überhaupt nicht wie ich das anstellen soll, da Zähler und Nenner ja privat angelegt sind und auch keine Methoden existieren die es mir ermöglichen da dran zu kommen. Oder überseh ich da was?
Ich bin über jede Hilfe dankbar.
MfG
Nils
Zuletzt bearbeitet von einem Moderator: