Hallo,
ich möchte in der Main Methode ein Objekt der Klasse Kettenbruch erstellen. Damit ich dann die Methode werteRekursiv testen kann.
Leider zeigt mit Java einen Übersetzungsfehler bei dem Ausdruck "Kettenbruch k1 = new Kettenbruch (feld);" an. Was mache ich falsch?
Vielen Dank und Grüße
ich möchte in der Main Methode ein Objekt der Klasse Kettenbruch erstellen. Damit ich dann die Methode werteRekursiv testen kann.
Leider zeigt mit Java einen Übersetzungsfehler bei dem Ausdruck "Kettenbruch k1 = new Kettenbruch (feld);" an. Was mache ich falsch?
Vielen Dank und Grüße
Java:
import java.util.Arrays;
public class EinsendeAufgabeKettenbruchStatic {
public class Kettenbruch {
// die lineare Darstellung des Kettenbruchs
private int[] werte;
/**
* erzeugt einen Kettenbruch aus der linearen Darstellung
* @param werte
*/
public Kettenbruch(int[] werte) {
this.werte = werte;
}
/**
* berechnet rekursiv den Wert des Kettenbruchs
* @return den rekursiv berechneten Wert des Kettenbruchs, bei fehlenden Werten 0
*/
public double werteRekursivAus() {
// Sonderfall
if (werte.length == 0) {
return 0;
}
// rekursive Hilfsmethode aufrufen, Berechnung bei index 0 starten lassen
return werteRekursivAus(0);
}
private double werteRekursivAus(int i) {
// wenn der letzte Index erreicht wird, den Wert zurueckgeben,
// da ein einelementiger Kettenbruch genau den Wert des einen Elements besitzt
if (i == werte.length - 1) {
return werte[i];
}
// Ansonsten den restlichen Kettenbruch rekursiv auswerten und die entsprechende Summe bilden
return werte[i] + 1/werteRekursivAus(i+1);
}
/**
* berechnet iterativ den Wert des Kettenbruchs
* @return den iterativ berechneten Wert des Kettenbruchs, bei fehlenden Werten 0
*/
public double werteIterativAus() {
// bei keinem Element wird 0 zurueckgeliefert
if (werte.length == 0) {
return 0;
}
// bei nur einem Element wird dieser Wert zurueckgeliefert
if (werte.length == 1) {
return werte[0];
}
// der Startwert ist der Kehrwert des letzten Element
double result = 1.0 / werte[werte.length - 1];
// alle Werte rueckwerts dazunehmen
for (int i = werte.length - 2; i >= 1; i--) {
// aktuellen Wert dazuaddieren und anschließend den Kehrwert bilden
result = 1 / (werte[i] + result);
}
// den vordersten Wert ohne Kehrwert dazuaddieren
return result + werte[0];
}
public static void main(String[] args) {
// [B]TODO[/B] Auto-generated method stu
int [] feld = {2,4,5,6,7};
Kettenbruch k1 = new Kettenbruch (feld);
k1.werteRekursivAus();
}
}