Größtes Element eines Arrays

N

Nooblearning

Gast
Guten Tag,

zu allererst möchte klar stellen das ich in diesem Gebiet noch ein Anfänger bin ^^, also Nachsicht haben...
ich habe mein Programm soweit hinbekommen das er mir den Größten Element und die zeile wo sich die Größten Elemente befinden ausgibt. Mein Problem ist aber das ich auch gerne die Spalte ausgeben möchte wo sich das Größte Element befindet.
Könnte jemand mir in dieser Hinsicht helfen...
hier erst mal mein Programm Code:
[JAVA=0]class aufg7 {
public static void max(int arr[][]){
int get;
for(int zeile=0;zeile<arr.length;++zeile){
get=arr[zeile][0];
for(int spalte=0;spalte<arr[zeile].length;++spalte){
if(arr[zeile][spalte]>get){
get = arr[zeile][spalte];

}

}

System.out.println("max befindet sich in der zeile " +
+zeile+" und spalte "+" mit den wert "+get);
}

}
public static void main(String[] args) {
int[][] arr = {{1,2,3,4}, {5,6,7},{5,6,9}};
max(arr);
}

}
[/code]
 

madboy

Top Contributor
Zwar keine Lösung für deine Frage aber du hast ein Problem mit deinen Testdaten. Es ist Zufall, dass die richtige Lösung ausgegeben wird.
Versuch mal mit
Java:
int[][] arr = {{9,2,3,4}, {5,6,7},{5,6,6}};
, sollte "1" raus kommen :)

EDIT: Äh. Kannst du noch Mal genau beschreiben, was du willst? Soll pro Zeile das größte Element ausgegeben werden oder das insgesamt größte Element mit Zeile und Spalte?
 
Zuletzt bearbeitet:
N

Nooblearning

Gast
@madboy

also auch mit den zahlen die ich ausprobieren soll kommt das richtige raus...^^

@an alle
also zunächst beschreibe ich mal genauer was ich will bzw. machen soll:
Prgrammieren Sie eine Klassenmethode max die ein zweidimensionales integer Array übergeben bekommt und die Zeile und Spalte auf dem Konsole ausgibt, in der sich der größte Wert des übergebenes Arrays befindet.

Ich habe die Aufgabe so intepretiert das ich in jeder Zeile den Größten Element ausgeben soll, ich finde das es auch in der Aufgabenstellung nicht klar definiert ist.
 

madboy

Top Contributor
Ich finde das recht klar definiert. Du sollst das größte Element des gesamten zweidimensionalen Arrays suchen und die Zeile und Spalte desjenigen ausgeben. Ist eigentlich recht einfach. Dort wo du dir das größte Element merkst, musst du nur einbauen dass dort auch die aktuelle Zeile und Spalte gespeichert werden.
 
N

Nooblearning

Gast
also ist meine Lösung nicht richtig ? oder muss ich das größte Element von den Gesamten {{1,2,3,4}, {5,6,7},{5,6,9}}; das wäre ja dann 9 oder nicht ?
 

madboy

Top Contributor
Genau, die richtige Ausgabe wäre dann:
max befindet sich in der zeile 3 und spalte 3 mit den wert 9

EDIT (erst denken, dann posten): Bis auf die Ausgabe der Zeilen und Spalten passt dein Programm :)
 
N

Nooblearning

Gast
danke madboy für die info, naja manchmal ist man etwas unachtsam was die Aufgabe angeht ;) kommt vielleicht daher das man zuviel denkt bzw. zuwenig haha
ich werde mich mal damit gleich befassen und dann den richtigen Code noch mal Posten, falls ich fragen habe stelle ich sie dann ^^
 
N

Nooblearning

Gast
irgendwie schaffe ich das nicht das er von den Gesamten Zeilen den Größten Element ausgibt hat vielleicht einer ne Idee ?
Danke
 

faetzminator

Gesperrter Benutzer
(nur im Browser getippt, ungetestet)
Java:
public static void max(int arr[][]) {
    int max = Integer.MIN_VALUE;
    for (int[] subArr : arr) {
        for (int val : subArr) {
            if (val > max) {
                max = val;
            }
        }
    }
    return max;
}
 
N

Nooblearning

Gast
@faetzminator

was bedeutet das "Integer.MIN_VALUE" ? Das Problem ist das der Prof. eine Lösung will ohne sowas zu benutzen ....
 

eRaaaa

Top Contributor
Java:
    public static void max(int arr[][]) {
	int zeile = 0;
	int spalte = 0;
	int max = arr[0][0];
	for (int i = 0; i < arr.length; i++) {
	    for (int j = 0; j < arr[i].length; j++) {
		if (arr[i][j] > max) {
		    max = arr[i][j];
		    zeile = i;
		    spalte = j;
		}
	    }
	}
	System.out.println("Max: " + max + ", in Zeile " + zeile
		+ " und Spalte " + spalte);
    }
 
N

Nooblearning

Gast
@eRaaaa
WOW einfach genial, wäre da nicht so drauf gekommen, das problem habe ich immer...^^, deshalb üben üben :D
dürfte ich fragen wie lange du schon Java machst ?
vielen Dank
 
N

Nooblearning

Gast
ich merke grad das ich die Lösung in meinen Händen hatte hätte einfach die get zuweisung unter die 2. for schleife und dann die abfrage machen müssen, oh man wie konnte ich das nur übersehen , aber danke nochmal an eRaaa dann der Lösung ist mir jetzt klar geworden wie arrays mit for schleifen argieren.... :D
 

Oben