Erste Schritte Maximaler Arrayeintrag

Hallo :)

Und zwar geht es z.b um den Array ={ 1, 3, -2, 5} im diesem Fall also die 5

wie kann ich hier den größten Array ausspucken lassen? Außerdem soll ich ein return einführen wenn der array leer ist mit Integer.MIN_VALUE.

Wie genau kann ich denn sagen, dass der array leer ist?

Java:
public int getMaximum(int[] array){

int [] array1 = new int[]; // hier muss ich ja immer festlegen wie groß mein Array ist aber wenn ich es gar nicht weiß? Für das Beispiel würde ja int[3] reichen.


if(array1==null){

return Integer.MIN_VALUE;  // aber das funktioniert nicht so wie ich es möchte
int max = 0;

for(int i =0; i<array1.length; i++){

// Und jetzt? :bahnhof:

return max;
}

}
 
B

bone2

Gast
rücke vernünftig ein, das kann nicht funktionieren weil da klammern fehlen.

üblicherweise testet man nach dem
Code:
array == null
auch noch
Code:
array.length == 0

max rausfinden ist ganz einfach:
kleinst möglichen wert merken
alle werte im array angucken
mit kleinstem vergleichen, ist der arraywert > gemerkter wert, dann ersetzen
nach der schleife gemerkten wert ausgeben

Java:
int [] array1 = new int[]; // hier muss ich ja immer festlegen wie groß mein Array ist
die zeile ist komplett überflüssig, du arbeitest nur mit dem array das als parameter übergeben wird
 
Java:
public int getMaximum(int[] array){
 

 
if(array.length==null){
 
       return Integer.MIN_VALUE;  }
 
int max =0;
         for(int i =0; i<array.length; i++){
         if(array[i]<max){
array[i] = max;

// und jetzt noch eine for schleife?
}
 

}
 
return max;
}
 
}

Wie kann man denn hier einrücken -.- mit Tab geht das nicht
 
Ich habe die Lösung aber wieso denn max= array[0] ? und nicht max=0?

Java:
if( array.length == 0){
	return Integer.MIN_VALUE;
}
	int max = array[0]; // WARUM??????????????????????????
	
		for(int i = 0; i < array.length; i++) {
		if(array[i] > max)
		 max = array[i];
}
	  
return max;
 

imillitay

Mitglied
Mal anders herum: Warum sollte es denn max = 0 sein?
Nehmen wir an, dass dein Array diese Werte enthält: [-4, -3, -2, -1]
Dann würde dein Programm ausgeben, dass der größte Wert im Array 0 ist. Kann das stimmen?

Da du mit array[0] beginnst, kannst du die for-Schleife übrigens auch bei 1 beginnen lassen.
 
N

nillehammer

Gast
imillitay hat gesagt.:
Da du mit array[0] beginnst, kannst du die for-Schleife übrigens auch bei 1 beginnen lassen.
So ohne weiteres gefährlich, wenn das Array nur ein element enthält. Ich würde das als weiteren Sonderfall mit aufnehmen, der zu einem frühzeitigen Return bereits vor der Iteration führt:
Java:
// Sonderfall 1: Array ist null oder leer
// Laut Aufgabenstellung soll Integer.MIN_VALUE
// zurück gegeben werden
if(array == null || array.length == 0) {
  return  Integer.MIN_VALUE;
}

// Sonderfall 2: Array hat nur ein Element
// Max muss also nicht wirklich gesucht werden
if(array.length == 1) {
  return array[0];
}

// Normalfall: Wir suchen das Element durch Iteration
max = array[0];
for(int i= 1;...
ThomyatBerlin hat gesagt.:
Wie kann man denn hier einrücken -.- mit Tab geht das nicht
Entweder den bereits korrekt eingerückten Code aus Deiner IDE kopieren oder mit Leerzeichen.
 
Zuletzt bearbeitet von einem Moderator:
array[0] heißt doch erste Eintrag. Und max=0 wäre doch einfach nur Null gesetzt und wäre der Array[] ={ -1 ,3 , 6 ,4 }


würde mein Programm doch schaun ob -1 kleiner ist als 3 und diese dann immer Null setzten oder nicht? und bei Array[0] wäre der erste Eintrag dann immer die größte Zahl...

hmmm... Also ich verstehe das nicht so ganz
 
N

nillehammer

Gast
array[0] heißt doch erste Eintrag. Und max=0 wäre doch einfach nur Null gesetzt und wäre der Array[] ={ -1 ,3 , 6 ,4 }


würde mein Programm doch schaun ob -1 kleiner ist als 3 und diese dann immer Null setzten oder nicht? und bei Array[0] wäre der erste Eintrag dann immer die größte Zahl...
Aus dem Teil hier kann ich mir leider keinen Reim machen, was Du damit sagen willst. Dein Programm setzt nichts Null (weder die Ziffer noch das Java-null). Dein Programm schaut auch nicht, ob etwas kleiner ist, sondern größer.
und bei Array[0] wäre der erste Eintrag dann immer die größte Zahl...
Nein, denn du merkst Dir max ja in einer Variablen, die Du durch die for-Schleife nötigenfalls aktualisierst. array[0] ist also nicht immer die größte gefundene Zahl, sondern erstmal (bis eben eine andere größer ist).
 
Zuletzt bearbeitet von einem Moderator:

imillitay

Mitglied
So ohne weiteres gefährlich, wenn das Array nur ein element enthält. Ich würde das als weiteren Sonderfall mit aufnehmen, der zu einem frühzeitigen Return bereits vor der Iteration führt:

Warum? Die Iteration wird dann gar nicht erst durchgefuehrt, siehe die Bedingung:

Java:
for (int i = 1; i < array.length; i++) {

Solange das Programm mit dem Array sonst nichts weiteres macht, sehe ich da kein Problem.
 
N

nillehammer

Gast
imillitay hat gesagt.:
Warum? Die Iteration wird dann gar nicht erst durchgefuehrt, siehe die Bedingung:
Hast Recht, es wird ja ggf. nur innerhalb der Schleife auf Index 1 zugegriffen. Das war zimlich dämlich von mir. :eek: @ThomyatBerlin: Damit entfällt auch mein "Sonderfall 2".
 
B

bone2

Gast
Ich habe die Lösung aber wieso denn max= array[0] ? und nicht max=0?

man fängt entweder mit dem ersten element als anfangsvergleichwert oder eben dem Integer.MIN_VALUE and, das dein Lehrer gerne wollte. Integer.MIN_VALUE ja das kleinsmögliche, oder anders rum, es gibt nichts das kleiner sein kann.

vollständige musterlösung:
Java:
    public int getMaximum(int[] array) {
        int max = Integer.MIN_VALUE;

        if (array == null) {
            return max;
        }

        for (int i = 0; i < array.length; i++) {
            if (array[i] > max) {
                max = array[i];
            }
        }

        return max;
    }
 

Ähnliche Java Themen

Neue Themen


Oben