Logo Logo
InfoHome Themen Projekte Links Software
Themen
JavaHamster
BlueJ
Java
Sprachelemente
Abstrakte Datentypen
Array
Array aus Arrays
Keller
Schlange
Liste
Sortierte Liste
Baum
Binärbaum
Swing
Sortieren
HTML
XHTML
CSS
XML
Datenbanken
MySQL
Theoretische Informatik
PHP
Kara
Lego-Roboter
Algorithmen

Mehrdimensionale Arrays - Arrays aus Arrays

Mehrdimensionale Arrays werden als Arrays von Arrays angelegt, indem zwei oder mehr Paare eckiger Klammern bei der Deklaration angegeben werden. Die Erzeugung erfolgt analog zu eindimensionalen Arrays durch Angabe der Anzahl der Elemente je Dimension. Ein zweidimensionales Array kann als Matrix dargestellt werden.

int[][] matrix = new int[2][3];

Der Zugriff auf mehrdimensionale Arrays geschieht durch Angabe aller erforderlichen Indizes, jeweils in eckigen Klammern.

matrix[0][0] = 1;
matrix[1][2] = 5;

Auch bei mehrdimensionalen Arrays können Deklaration, Erzeugung und Initialisierung in verkürzter Syntax vorgenommen werden.

int[][] matrix = {{1,2,3},{4,5,6}};

Das folgende Programm erzeugt ein Array und füllt es mit (Unter-)Arrays:

public class ArrayOfArraysDemo {
 public static void main(String[] args) {
  String[][] cartoons =
  {
   { "Flintstones", "Fred", "Wilma", "Pebbles", "Dino" },
   { "Rubbles", "Barney", "Betty", "Bam Bam" },
   { "Jetsons", "George", "Jane", "Elroy", "Judy", "Rosie", "Astro" },
   { "Scooby Doo Gang", "Scooby Doo", "Shaggy", "Velma", "Fred", "Daphne" }
  };

  for (int i = 0; i<cartoons.length; i++) {
    System.out.print(cartoons[i][0] + ": ");
   for (int j = 1; j<cartoons[i].length; j++) {
     System.out.print(cartoons[i][j] + " ");
   }
   System.out.println();
  }
 }
}

Beachte, dass hier die Unter-Arrays alle von verschiedener Länge sind. Die Namen der Unter-Arrays lauten cartoons[0] , cartoons[1], usw.

Auch Unter-Arrays müssen natürlich erzeugt werden. Wenn nicht wie oben die abkürzende Schreibweise benutzt wird, muss man die Erzeugung mit Hilfe des new-Operator vornehmen:

public class ArrayOfArraysDemo2 {
 public static void main(String[] args) {
  int[][] eineMatrix = new int[4][5];

  // Matrix füllen
  for (int i = 0; i<eineMatrix.length; i++) {
   for (int j = 0; j<eineMatrix[i].length; j++) {
    eineMatrix[i][j] = i + j;
   }
  }

  // Matrix ausgeben
  for (int i = 0; i<eineMatrix.length; i++) {
   for (int j = 0; j<eineMatrix[i].length; j++) {
     System.out.print(eineMatrix[i][j] + " ");
   }
   System.out.println();
  }
 }
}

Aufgaben

Ein magisches Quadrat ist eine Tabelle mit n Zeilen und n Spalten, gefüllt mit den ersten n2 natürlichen Zahlen (beginnend mit 1), wobei die Summe der Zahlen in jeder Zeile, Spalte und Diagonale gleich ist. Schreiben Sie ein Programm, das ein magisches Quadrat der Größe n x n erzeugt und auf dem Bildschirm ausgibt. Gehen Sie dabei wie folgt vor:

a) Im Eingabeteil soll zunächst eine ganze Zahl in die anfangs mit 0 initialisierte int-Variable n eingelesen werden. Dies soll eventuell wiederholt geschehen, bis sichergestellt ist, dass der Wert von n größer als 0, kleiner als 10 und ungerade ist.

b) Deklarieren und erzeugen Sie ein zweidimensionales int-Array der Größe n x n.

c) Definieren Sie eine int-Variable zeile und initialisieren Sie diese mit dem (ganzzahligen) Wert n/2.

d) Definieren Sie eine int-Variable spalte und initialisieren Sie diese mit dem (ganzzahligen) Wert n/2 + 1.

e) Initialisieren Sie eine int-Variable i mit dem Wert 1 und wiederholen Sie die folgenden Schritte, solange i kleiner oder gleich n*n ist:

  • Weisen Sie dem Element an der Stelle [zeile] [spalte] des Arrays quad den Wert i zu.
  • Erhöhen Sie spalte um 1, erniedrigen Sie zeile um 1.
  • Wenn zeile kleiner als 0 ist, weisen Sie zeile den Wert n-1 zu.
  • Wenn spalte gleich n ist, weisen Sie spalte den Wert 0 zu.
  • Wenn das Element an der Stelle [zeile][spalte] des Arrays nicht den Wert 0 hat, führen Sie folgende Schritte durch:
    - Erhöhen Sie zeile und spalte um 1.
    - Wenn zeile gleich n ist, weisen Sie zeile den Wert 0 zu.
    - Wenn spalte gleich n ist, weisen Sie spalte den Wert 0 zu.
  • Erhöhen Sie i um 1.

f) Überlegen Sie sich, wie eine geeignete Bildschirmausgabe des magischen Quadrates aussehen könnte, und realisieren Sie diese.

Wir wollen nun mit Hilfe geeigneter Methoden Zeilen-, Spalten- und Diagonalensummen automatisch berechnen lassen, um die Richtigkeit des obigen Algorithmus auch für Dimensionen >=5 leicht überprüfen zu können.

Ergänzen Sie Methoden zur Überprüfung der Spalten- und Diagonalensummen und wenden Sie diese auf das Quadrat an.

» drucken: pdf | html

© 2004-2024 M. Blanke · Ursulaschule · Kleine Domsfreiheit 11-18 · 49074 Osnabrück