Fehler beim erstellen eines Objektes

C.B.

Aktives Mitglied
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



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();

    }


}
 
einen Übersetzungsfehler
Welchen?

Besser wäre es die Klasse Kettenbruch als normale Klasse in einer separaten Datei zu erstellen, anstatt als innere Klasse.

In deinem Fall (Innere Klasse ist eine Mitgliedsklasse) kann es die innere Klasse nicht ohne die äußere Klasse geben:
Java:
public class Outer {

    public class Inner { }

    public static void main(String[] args) {
        Outer outer = new Outer();
        Inner inner = outer.new Inner();

        // alternativ:
        // Inner inner = new Outer().new Inner();
    }
}

Oder du machst eine statische innere Klasse daraus.
 
Zuletzt bearbeitet:
Welchen?

Besser wäre es die Klasse Kettenbruch als normale Klasse in einer separaten Datei zu erstellen, anstatt als innere Klasse.

In deinem Fall (Innere Klasse ist eine Mitgliedsklasse) kann es die innere Klasse nicht ohne die äußere Klasse geben:
Java:
public class Outer {

    public class Inner { }

    public static void main(String[] args) {
        Outer outer = new Outer();
        Inner inner = outer.new Inner();

        // alternativ:
        // Inner inner = new Outer().new Inner();
    }
}

Oder du machst eine statische innere Klasse daraus.
Vielen Dank. Entschuldige die doofe Frage, hab gar nicht gemerkt, dass ich zwei Klassen drin hatte.
 

Zurück
Oben