Brauche dringend HILFE bei Array´s


amasya

Grünschnabel
Hallo,
bin recht neu im Forum und brauche dringend Hilfe bei einer wichtigen Klausuraufgabe.
Hier wäre die Frage.

Der Differenz-Methode wirde ein Array x übergeben. Zurückgegeben werden soll die Differenz aufeinanderfolgender Werte.
Berechnungsmethode: Nachfolger-Vorgänger
Mit den Zahlen aus dem Beispiel: 2,4-(-1,5)=3,9 und 3,8-2,4=1,4 usw.

Beispiel:
double[] a={-1.5,2.4, 3.8, 4.3, 6.8}
double[] b=differenz (a); Ergebnis:b={3.9, 1.4, 0.5, 2.5}

Hinweis:Überlegen Sie genau, welche Größe das Array y haben muss.
Rechnen Sie im Quelltext mit den Variablen und nicht mit den konkreten Zahlen aus dem Beispiel!

Ich bedanke mich im Vorraus.
mfg
 

zer0

Erfahrenes Mitglied
Hallo,

hab hier mal was schnell geschrieben, da ich aber kein Editor habe weiß ich auch nicht obs korrekt ist und kann es nicht testen. Falls es fehler hat grad melden :)

Java:
public double[] getDifference(double[] zahlen) {
    double[] zahlen = {-1.5,2.4, 3.8, 4.3, 6.8};
    double[] ergebnis = zahlen.length - 1; // Ergebnisarray muss immer 1 kleiner sein als Zahlenarray

    for(int i = 1; i <= zahlen.length; i++) {
        ergebnis[i-1] = zahlen[i] - zahlen[i-1];
    } 
    
    return ergebnis;
}

Man könnte auch statt eines Ergebnisarrays einfach eine ArrayList machen und die am Ende in ein Array umwandeln.

Gruß
 
Zuletzt bearbeitet:

HonniCilest

Erfahrenes Mitglied
Falls es fehler hat grad melden

Das wird wohl nicht funktionieren...

Java:
double[] ergebnis = zahlen.length - 1;

Es sollte wohl eher so heißen:

Java:
double[] ergebnis = new double[zahlen.length - 1];

Desweiteren muss in der for-Schleife <= in < umgewandelt werden.
 

zer0

Erfahrenes Mitglied
Java:
double[] ergebnis = zahlen.length - 1;

Es sollte wohl eher so heißen:

Java:
double[] ergebnis = new double[zahlen.length - 1];

Desweiteren muss in der for-Schleife <= in < umgewandelt werden.

Hallo,

da hast du natürlich vollkommen recht. :)
Mit einem Editor wäre mir dieser Fehler auch aufgefallen :)

Nunja hier ist der verbesserte Code:
Java:
public double[] getDifference(double[] zahlen) {
    double[] zahlen = {-1.5,2.4, 3.8, 4.3, 6.8};
    double[] ergebnis = new double[zahlen.length - 1]; // Ergebnisarray muss immer 1 kleiner sein als Zahlenarray
 
    for(int i = 1; i < zahlen.length; i++) {
        ergebnis[i-1] = zahlen[i] - zahlen[i-1];
    } 
 
    return ergebnis;
}
 

Matt297

Erfahrenes Mitglied
Ich hab dein Beispiel mal aufgefasst(weil ich das genauso machen würde ;) ) und noch einige kleine Fehler beseitigt(z.B. definierst du den Parameter zahlen[] neu, was einen Fehler schmeißt) in eine Klasse gepackt und dann auch kompiliert und getestet.

So funktioniert es einwandfrei:

Java:
public class Test {

	public static void main(String[] args) {
		System.out.print(java.util.Arrays.toString(getDifference(new double[]{-1.5,2.4, 3.8, 4.3, 6.8}))+"\n");
	}

	public static double[] getDifference(double[] zahlen) {
	    double[] ergebnis = new double[zahlen.length - 1]; // Ergebnisarray muss immer 1 kleiner sein als Zahlenarray
 
	    for(int i = 1; i < zahlen.length; i++) {
        	ergebnis[i-1] = zahlen[i] - zahlen[i-1];
	    } 
 
	    return ergebnis;
	}
}
 

Neue Beiträge

Forum-Statistiken

Themen
272.351
Beiträge
1.558.596
Mitglieder
187.824
Neuestes Mitglied
Danke!