Addieren von Polynomen Java

Wenn Du das mal vernünftig formatierst, siehst Du recht schnell, dass das r innerhalb des then-Blocks deklariert wurde. Daher steht r unten nicht zur Verfügung.

Abgesehen davon willst Du nicht r zurückgeben, denn r ist ein double-Array und kein Polynomial-Objekt.

Du willst etwas wie:
Java:
    public Polynomial getDerivative() {
        double[] r;
        if(p.length>1) {
            r = new double[p.length-1];
            for(int i=0; i<p.length;i++) {
                r[i]=p[i]*i;
            }
        }
        else {
            r = new double[0];
        }
        return new Polynomial(r);
    }
 
Wenn Du das mal vernünftig formatierst, siehst Du recht schnell, dass das r innerhalb des then-Blocks deklariert wurde. Daher steht r unten nicht zur Verfügung.

Abgesehen davon willst Du nicht r zurückgeben, denn r ist ein double-Array und kein Polynomial-Objekt.

Du willst etwas wie:
Java:
    public Polynomial getDerivative() {
        double[] r;
        if(p.length>1) {
            r = new double[p.length-1];
            for(int i=0; i<p.length;i++) {
                r[i]=p[i]*i;
            }
        }
        else {
            r = new double[0];
        }
        return new Polynomial(r);
    }
Vielen Dank mihe7. Der Fehler war wirklich, dass ich keine lokale Variable für die ganze Methode erstellt habe und demnach dann auch kein return dieser Variable stattfinden kann, da dieser im unteren Block gar nicht mehr zur Verfügung steht, wie du gesagt hast. Nochmals vielen vielen lieben Dank
 
Java:
import java.util.Arrays;

public class Polynomial {
	public double p[];

	Polynomial(int[] h) {
		if (h == null) {
			p = new double[0];
		} else {
			p = new double[h.length];
			for (int i = 0; i < h.length; i++) {
				p[i] = h[i];
			}
		}
	}

	public Polynomial getDerivative() {
		if (p.length > 1) {
			int[] r = new int[p.length - 1];// Da Länge der Ableitung immer um eins kleiner ist als die zu ableitende
											// Funktion
			for (int i = 0; i < r.length; i++) {
				r[i] = (int) (p[i + 1] * (i + 1));
			}
			return new Polynomial(r);
		}
		if (p.length == 1) { // Wenn es ein Polynom vom Grad 1 ist
			Polynomial r = new Polynomial(new int[0]);// Da die Länge von einem Polynom vom Grad 1 immer die Länge 1 hat
														// bzw. 0 in der Informatik
			return r;
		}
		// sonst
		return null;
	}

	@Override
	public String toString() {
		return String.format("Polynomial [p=%s]", Arrays.toString(p));
	}

	public static void main(String[] a) {
		Polynomial p = new Polynomial(new int[] { 1, 4, 0, 2 });
		while (p != null) {
			System.out.println(p);
			p = p.getDerivative();
		}
	}
}
Code:
Polynomial [p=[1.0, 4.0, 0.0, 2.0]]
Polynomial [p=[4.0, 0.0, 6.0]]
Polynomial [p=[0.0, 12.0]]
Polynomial [p=[12.0]]
Polynomial [p=[]]
Wenn ich mich nicht täusche ist die 3. Ableitung 12
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben