Java-Basics-Aufgabe

lrnz22

Mitglied
Folgende Aufgabenstellung
Schreiben Sie eine Funktion int sumSquares(int[] data), welche die Summe der Quadrate der Summanden berechnet und zurückgibt.
Mein bisheriger Versuch:
public int sumSquares(int[]data){
for(int i=0;i<=data.length;i++) {
for(int y=0;y<1;y++){
int x = data [ i ]*data[ i ];
}
}
return x;
}
Komme hier leider nicht mehr weiter & weiß auch nichtsicher ob das was ich bis jz hab so zielführend ist (Glaube das der Ansatz schon stimmt jedoch weiß ich nicht wie ich die Summe der verschieden Werte die x beim durchlaufen der for-Schleife annimmt in einer Variable speichern kann). Wäre cool falls mir hier jemand helfen kann 🙂
 
Bei so Aufgaben ist wichtig, dass Du DIr genau überlegst, wie Du da vorzugehen hast.

Der erste Schritt ist da immer, dass man es einmal durchspielt. Kannst Du die Summe der Quadrate berechnen, wenn ich Dir ein Array vorgebe?

Also: [ 1, 2, 3 ]. Was ist die Summe der Quadrate?

Wenn Du das hinbekommen hast: Was hast Du genau gemacht? Das formulierst Du in einer einfachen Schritt für Schritt Beschreibung.

Die Beschreibung prüfst Du dann einfach noch einmal, in dem Du damit ein Beispiel noch einmal durchgehst.

==> Erst wenn das soweit alle richtig ist, dann schreibst Du Java Code.
 
Bin zu der Überlegung gekommen, dass sich die Aufgabe mit einer for Schleife wahrscheinlich einfacher lösen lässt jedoch komm ich immer noch nicht drauf wie man die Quadrate dann addiert. Der Ansatz ist theoretisch klar(denke ich zumindest): [ i ] * [ i ] + [ i +1 ] * [ i +1] .... + [ array.length]* [ array.length]
int sumSquares(int[]data){
for(int i=0;i<=data.length;i++){
int x= data[ i ]*data[ i ];
}
return;
}
 
Wie gesagt: Wie machst Du es von Hand? Nimm Dir wirklich Stift und Papier und überlege Dir, was Du genau machst.

Und dann solltest Du eben darauf kommen, dass Du Dir ja eine Summer der bisherigen Quadrate merkst - so wie es @Jw456 nun schon vorweggenommen hat.
 
Erstmal danke an alle für die Hilfe 🙂 ,
das wäre jetzt meine Lösung, welche meiner Meinung nach auch Sinn macht jedoch bekomme ich den Fehler:
cannot find symbol: return x;

int sumSquares(int[]data){
for(int i=0;i<=data.length;i++){
int x = x + data[ i ]*data[ i ];
}
return x;
}

Wenn ich stattdessen x in der Methode & nicht in der for Schleife deklariere und nicht initialisiere bekomm ich den Fehler: x might not have been initialized
Übersehe ich hier irgendwas oder was ist das Problem?
 
cannot find symbol: return x;
Du erstellst die Variable in einem Block in der for Schleife.
Außerhalb des Blocks ist sie nicht vorhanden.


Mal vom der Rückgabe abgesehen. Was willst du, du willst dir Werte merken. Aber was machst du, bei jedem Schleifen Durchgang erstellst du eine neue Variable die dann leer ist. Das ist kein merken.



Wenn ich stattdessen x in der Methode & nicht in der for Schleife deklariere und nicht initialisiere bekomm ich den Fehler: x might not have been initialized
Dann gib ihr einen Wert.
 
Zuletzt bearbeitet:
Du erstellst die Variable in einem Block in der for Schleife.
Außerhalb des Blocks ist sie nicht vorhanden.


Mal vom der Rückgabe abgesehen. Was willst du, du willst dir Werte merken. Aber was machst du, bei jedem Schleifen Durchgang erstellst du eine neue Variable die dann leer ist. Das ist kein merken.




Dann gib ihr einen Wert.
Okay wenn ich int x = data[0]*data[0] oben in der Methode initialisiere und den Startwert von i = 1 setze dann müsste doch in folgender Zeile
for(int i=1;i<=data.length;i++){
x = x+ data * data;
}
immer der gesuchte x Wert gespeichert sein, da für i =1 das x = data[0]*data[0] + data[1]*data[1] gesetzt wird und bei i =2 dann
x ( also data[0]*data[0] + data[1]*data[1]) + data[2] *data[2] = x gesetzt wird usw.. oder versteh ich hier irgendwas grundlegend falsch?
 
du brauchst doch nur “x“ außerhalb der for erstellen und ihr "0“ zuweisen.
Somit kann die for auch bei „0“ anfangen.



Deine Abbruch Bedingung in der for ist auch falsch.
i<=data.length wie weit läuft die Schleife?
x = x+ data * data;
falsch was willst du rechnen?
 
Zuletzt bearbeitet:
Beste Antwort

Zurück
Oben