# Matrix mit unterschiedlicher Anzahl von Spalten pro Zeile?



## jan10101 (5. Mrz 2006)

```
public static double[][] initMatrix(int zeilen, int spalten){
	double matrix[][]=new double[zeilen][spalten];
	for(int zeile=0;zeile<matrix.length;zeile++)
		for(int spalte=0;spalte<matrix[0].length;spalte++)
			matrix[zeile][spalte]=1;
	return matrix;
}
```

Hi, ich hab hier ne Methode die die Zeilen und Spalten Zahl übergeben bekommt, dann eine Matrix erzeugt und jedes Feld mit 1 initialisiert. Was müsste ich hier ändern, um eine unterschiedliche Anzahl von Spalten pro Zeile zu unterstützen? Hat da jemand ne Idee?


----------



## byte (5. Mrz 2006)

Du bist Dir aber im Klaren darüber, dass das dann keine Matrix mehr wäre?

Du könntest es mit Listen lösen, indem Du eine Liste initialisierst und ihr wiederum jeweils unterschiedlich lange Listen hinzufügst.


----------



## Beni (5. Mrz 2006)

In Java gibt es keine 2 dimensionalen Arrays, nur Arrays von Arrays, und das kannst du hier ausnutzen:


```
// Jetzt muss man für jede Spalte 
//(oder jede Zeile, jenachdem wie du das interpretierst)
// die Grösse angeben, deshalb der Array lengths
public static double[][] init( int[] lengths ){
  // Leerer Array von Arrays erzeugen
  double[][] result = new double[ lengths.length ][];

  // Die Einträge einzeln füllen
  for( int i = 0; i < result.length; i++ ){
    int length = lengths[i];
    result[i] = new double[ length ];
    for( int j = 0; j < length; j++ )
       result[i][j] = 1;
  }

  return result;
}
```


----------



## jan10101 (8. Mrz 2006)

Ah ja super danke. Und dann hätt ich noch ne Frage: Wenn ich jetzt eine unterschiedliche Anzahl Spalten pro Zeile haben will, wie mach ich das dann? Weil ich kann nicht erst das Array für die Zeilen erzeugen:


```
double matrix[][]=new double[][zeilen.length];
```


----------



## SlaterB (8. Mrz 2006)

du siehst das logisch falsch,
ein zweidimensionales Array funktioniert nur in eine Richtung,

stell dir die erste Dimension als die Anzahl der Stockwerke in einem Haus vor, 
und die zweite Dimension als Anzahl der Zimmer pro Stockwerk,

die zweite Dimension kann pro Stockwerk beliebig sein, 
aber die Anzahl der Stockwerke ist nur eine einzige Zahl, die kann nicht von der zweiten abhängen,

was du willst geht höchstens durch Umdrehen der Dimensionen,
zeilen vorne und spalten hinten


----------

