Kleine Frage zu doppelten Arrays

Status
Nicht offen für weitere Antworten.

ModellbahnerTT

Bekanntes Mitglied
Hallo zusammen, habe folgendem Programm-Code.

Java:
/**
 * Klasse WayDown zur Repräsentation der Suche des optimales Weges von oben 
nach unten durch eine m x n Matrix von ganzen Zahlen, sodass die Summe aller 
Zahlen auf dem Weg maximal ist.
 * 
 */

public class WayDown {
	
	private int[][] matrix; //m-Zeilen, n-Spalten
	private int[][] bestWay;	
 	
	/**
     * Konstruktor für Objekte der Klasse WayDown
     * 
     * @param int[][] matrix - Matrix mit m-Zeilen und n-Spalten
     */
	public WayDown(int[][] matrix){
		this.matrix = matrix;
		this.bestWay = new int[matrix.length][matrix[0].length];
		for(int i = 0; i<bestWay.length; i++){
			for(int j = 0; j<bestWay[0].length; j++){
				bestWay[i][j] = -1;
			}
		}
	}

Verstehe eines nicht: Es wird ja eine m x n Matrix eingetragen.
Dann soll erstmal eine neue bestWay Matrix erstellt werden, welche mit -1sen gefüllt wird.

Dort wird matrix.length genutzt um die länge der zeilen- matrix aus zu lesen und dann matrix[0] um die länge der Spalten aus zu lesen.
Danach wird die länge von bestWay und dann auch einmal bestWay[0] ausgelesen.

Ich verstehe nicht, wie man somit die Werte ausliest.
Ich weiß, was z.B. bestwar[j] in einer Schleife bewirken würde.
Aber welchen Wert möchte er nehmen, wenn man einmal bestWay.length und einmal bestWay[0].length nimmt, wenn man sich da eine m * n Matrix vorstellt.

Vielen Dank schonmal
 
Zuletzt bearbeitet von einem Moderator:
Verstehe eines nicht: Es wird ja eine m x n Matrix eingetragen.
Dann soll erstmal eine neue bestWay Matrix erstellt werden, welche mit -1sen gefüllt wird.
Das ist alles soweit korrekt, was verstehst du dann nicht?

Dort wird matrix.length genutzt um die länge der zeilen- matrix aus zu lesen und dann matrix[0] um die länge der Spalten aus zu lesen.
Ähm, ja, dürfte klar sein...

Ich verstehe nicht, wie man somit die Werte ausliest.
da wird nirgends was ausgelesen, in die bestWay matrix wird nur geschrieben.
Ich weiß, was z.B. bestwar[j] in einer Schleife bewirken würde.

ja, schön, da stehen doch zwei schleifen: die äußere durchläuft alle zeilen, die innere alle einträge in der jeweiligen zeile, und setzt die auf -1
Aber welchen Wert möchte er nehmen, wenn man einmal bestWay.length und einmal bestWay[0].length nimmt, wenn man sich da eine m * n Matrix vorstellt.
Ab da raff ich endgültig nix, wer ist "er", und was du wollen? :bahnhof:

Ist dir klar, dass hier stillschweigend davon ausgegangen wird, dass es sich um eine Rechteckige anordnung handelt, also um sowas:
Code:
xxxx
xxxx
xxxx

und nicht etwa um sowas:
Code:
xxxxxxx
xx
xxxxx
xxxxxx
x
was auch möglich wäre, aber zu fehlern führen würde?
 
sorry 0x7F800000 vielleicht habe ich mich unglücklich ausgedrückt.

Hab dank eurer Hilfe + rumprobieren herrausgefunden wie das läuft.

Für die Allgemeinheit:
Ich kannte das immer nur so, dass wenn man auf ein doppeltes array einen Zugriff haben möchte, man beide Werte angeben muss also z.B. [0][1] dann greift man auf die 0. Zeile, 1. Spalte zu.

Jetzt hatte ich das Beispielshalber mit folgenden Array gemacht: {7,2,2},{2,5,6},{4,1,0},{1,5,0}
Man muss eine Vorstellung davon haben, wie sowas ungefährt "aussieht" sonst versteht man es nicht.

Das wären 4 Felder in die quer richtung und pro Feld dann 3 Felder in die lengrichtung.
Wenn man jetzt array.lenght abfragt, dann zählt der quasi von links nach rechts und kommt auf 4.
Fragt man array[0].lenght ab dann geht er in das Nulte bzw. 1. Feld und zählt dann nach unten und kommt somit auf 3.

Daraus folgt wie Slaterb bereits gesagt hat:

bestWay.length = m
bestWay[0].length = n
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben