Array Maximum bestimmen mit for und foreach

sash22

Mitglied
Hi,

bin jetzt gerade gestartet, nicht speziell mit Java, deshalb hoffe ich, dass ich hier dennoch Antwort bekomme.

Es geht also darum, das Maximum eines Arrays mit einer Schleife zu bestimmen, Aufgabenstellung war mit foreach.

Ansatz:

int[] liste = {4,2,11,17,42,8,7}; //array
int maxValue = 0; //bin mir noch nicht sicher, was das auslöst, in der Musterlösung wird -1 vorgegeben, das verstehe ich erst recht nicht
foreach (int max in liste){
if (int max > maxValue)
maxValue = max //in dieser oder der vorigen zeile ist gefühlt der Fehler, ich weiß nur nicht warum
}
print (max)


Wäre nice wenn jemand helfen kann, damit ich hier vom Verständnis weiterkomme. Auch das Ganze alternativ mit for zu bestimmen würde helfen.
 
Also ich mache erstmal deinen Code zu etwas mehr Java:

Java:
int[] liste = { 4, 2, 11, 17, 42, 8, 7}; //array
int maxValue = 0; //bin mir noch nicht sicher, was das auslöst, in der Musterlösung wird -1 vorgegeben, das verstehe ich erst recht nicht

foreach (int max in liste) {
    if (int max > maxValue) {
        maxValue = max //in dieser oder der vorigen zeile ist gefühlt der Fehler, ich weiß nur nicht warum
    }
}
 
System.out.println(max);

Mal von der suboptimalen Namensgebung der Variablen abgesehen, gibt es hier ein paar Syntaxfehler:

* #4: foreach gibt es nicht, in Java ist es einfach for mit der Syntax for (TYPE variable : iterable).
* #5: Deklaration einer Variable in der if Bedingung.
* #6: Fehlendes Semikolon.
* #10: Verwendung einer Variable auszerhalb des Blocks wo diese definiert wurde.

Wenn du die Fehler korrigierst, ist es eigentlich schon richtig wenn ich mich nicht irre.

bin mir noch nicht sicher, was das auslöst, in der Musterlösung wird -1 vorgegeben, das verstehe ich erst recht nicht

Die Frage ist: Was ist der niedrigste Wert welcher gesucht wird? Wenn dein int Array "-1" enthalten kann, dann musst du mindestens bei "-1" starten. Idealerweise wuerdest du da den niedrigsten moeglichen int Wert nehmen, Integer.MIN_VALUE, als Startpunkt weil du dann auf jeden Fall den groeszten Wert findest, unabhaengig davon was im Array drinnen ist.
 
super, das hilft mir schon sehr, danke!

* #5: Deklaration einer Variable in der if Bedingung.

wenn ich es jetzt richtig verstehe, muss die variable innerhalb der Bedingung definiert werden, deshalb wurde maxValue = max noch einmal in {} gesetzt oder?
 
wenn ich es jetzt richtig verstehe, muss die variable innerhalb der Bedingung definiert werden, deshalb wurde maxValue = max noch einmal in {} gesetzt oder?
Nein, da muss gar nicht definiert werden, da muss nur eine Bedingung hin. Die Variablen sind ja alle schon definiert/deklariert. Vielleicht hatte ich genauer sein sollen mit "Ungueltige Mischung aus Deklaration einer Variable und einer Bedingung".
 
sry wenn ich noch einmal nachfrage, ich habe noch Schwierigkeiten zu verstehen was genau der code macht und bin mir nicht sicher ob jetzt noch eine Bedingung fehlt

int maxValue = 0; //Startpunkt wäre hier 0

foreach (int max in liste) { //das ist die Bedingung oder? wir suchen max aus dem array, es handelt sich um ganzzahlen
if (int max > maxValue) { //jetzt wird das array durchgegangen und für jeden wert wird geprüft ob er größer als der bisherige maxValue ist
maxValue = max //nach dem durchlaufen der schleife ist das Ergebnis da und kann im weiteren code ausgegeben werden
}
 
if (max > maxValue) { //int musste weg, da sonst ungültige Mischung aus Deklaration einer variablen und Bedingung
maxValue = max;
}
print (max)
 

Zurück
Oben