Java: Array summieren

Der Methode sumBestimmteZahlen wird ein Array feld und ein Array
sumNicht übergeben. Das Array sumNicht hat immer 3 Elemente. Die Methode
soll alle Zahlen des Arrays feld summieren, außer diejenigen Elemente des
Arrays feld, welche im Array sumNicht angegeben sind.

Das ist meine Aufgabe (ich muss nur die Aufgabe lösen und dann habe ich das alles hinter mir. Bin kein programmierer und brauche es auch nicht, muss es leider aber über die Aufgabe schaffen).

Habe mich also was schlau gemacht und folgender Ansatz.

public int sumBestimmteZahlen(int[] feld, int[] sumNicht) {
int sum = 0;
for (int i=0; i<feld.length; i++)
.
.
.
return sum;
 }

Mein Problem, ichweiss nicht genau, was man von mir will bzw. habe ich bis jetzt keine Idee, wie ich das Umsetze.
Hoffe, das, was ich mir bis jetzt überlegt habe, ist kein Schmarn.
Hat jemand eine Idee bzw könnte mir helfen?
das wäre sehr nett von euch.
Danke!

Wie geb ich denn da jetzt Hilfe, ohne gleich die Aufgabe zu lösen? Bekommst Du es erst einmal hin, alle Elemente aus feld zu addieren? Wie sähe der Code ab Zeile 4 dann aus?

Ebenius

na du hast doch schon alles was du brauchst
einfach alle aufsummieren außer die die im Array sind

Edit: Oh da war ja schon jemand schneller :smiley:

Alle Felder im Array addiere ich doch so, oder liege ich da falsch?

public int sumBestimmteZahlen(int[] feld, int[] sumNicht) {
int sum = 0;
for (int i=0; i<feld.length; i++)
sum += feld**;
return sum;
}

Da liegst Du goldrichtig. Und jetzt fügst Du in Zeile 4 eine if-Abfrage ein, die Prüft, ob [ul]
[li]feld** nicht gleich sumNicht[0] und
[/li][li]feld** nicht gleich sumNicht[1] und
[/li][li]feld** nicht gleich sumNicht[2][/ul]
[/li]… ist.

Hilft das?

Ebenius

Meinst du so?

public int sumBestimmteZahlen(int[] feld, int[] sumNicht) {
int sum = 0;
for (int i=0; i<feld.length; i++)
if (**feld != sumNicht[0] && **feld != sumNicht[1] && **feld != sumNicht[2]){
sum += feld**;
}
return sum;
}

Das ist fast richtig. Das was nicht stimmt ist mein Fehler. Ich hab’s zwar oben richtig hingeschrieben, leider ist [noparse]**[/noparse] gleichzeitig die Markierung für schräggestellten Text. Deswegen hat’s das Forum anders dargestellt als ich wollte. Hier nochmal, was ich eigentlich zu schreiben glaubte:

Da liegst Du goldrichtig. Und jetzt fügst Du in Zeile 4 eine if-Abfrage ein, die Prüft, ob [ul]
[li]feld[noparse][/noparse]** nicht gleich sumNicht[0] und
[/li][li]feld[noparse][/noparse]** nicht gleich sumNicht[1] und
[/li][li]feld[noparse][/noparse]** nicht gleich sumNicht[2][/ul]
[/li]… ist.

Übernimm den Unterschied in Deinen Quelltext und Du solltest alles richtig haben (wenn ich jetzt nicht eine Kleinigkeit übersehe).

Ebenius

Habe mir mal Eclipse besorgt, denn das hilft doch schon was, wenn man eine Entwicklungsumgebung hat.

Dann sollte es so aussehen

public int sumBestimmteZahlen(int[] feld, int[] sumNicht) {
int sum = 0;
for (int i=0; i<feld.length; i++)
if (feld** != sumNicht[0] && feld** != sumNicht[1] && feld** != sumNicht[2]){
sum += feld**;
}
return sum;
}

Dann hätte ich da aber noch einen Fehler.

return sum soll falsch sein.
Die Meldung dazu ist:
Multiple markers at this line.
Void methods cannot return a value.

Schonmal vielen Dank, dass ihr mich au die richtige Spur gebracht habt.
Vielleicht werde ich mit dem thema über die Aufgabe beschäftigen. Scheit doch sehr interessant zu sein. Aber mir fehlt die Übung.

Kopier Dir nochmal den Quelltext von hier aus in Deine Entwicklungsumgebung. Bei mir kompiliert der Quelltext sauber. Wieso das Dein Compiler anders sieht vermag ich (abgesehen von Copy-And-Paste-Fehlern) nicht zu vermuten.

Ebenius

alle elemente des arrays addieren und danach alle elemente von nichtSum abziehen ?!

Ne, das ist wohl nicht was gefordert ist. Zum Beispiel:

int[] sumNicht = { 1, 8, 11 };
sumBestimmteZahlen(feld, sumNicht);```
Da soll sicher 22 rauskommen und nicht 5.

Ebenius