Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen. Beispiele sind Listen Tabellen Arrays können eine oder mehrere Dimen-sionen haben. (C) Harder 2007 02.12.2018
Beispiele eindimensionale Arrays Listen Vektoren zweidimensionale Arrays Tabellen Matrizen ein TicTacToe-Spielfeld ein Excel-Arbeitsbatt dreidimensionale Arrays „Zauber“würfel (C) Harder 2007 02.12.2018
Eindimensionale Arrays Eindimensionale Arrays sind Listen. Folgende Liste hat 5 Positionen Man muß zwischen der Position der Zelle und dem Inhalt der Zelle unterscheiden. In Java hat die erste Zelle die Positionsnummer 0. Die Zelle an dieser Position enthält den Wert 9. Die letzte Zelle hat die Positionsnummer 4. Ihr Inhalt ist 8. (C) Harder 2007 02.12.2018
Deklaration einer Liste Die Beispielliste Liste wird durch folgende Anweisung dekla-riert: int Liste [ ] = new int [5] ; Die Liste ist vom Typ int. Alle Elemente sind Integerwerte. Die Liste hat 5 Zellen. Die Zellen heißen Liste[0], Liste [1], Liste[2], Liste [3], Liste[4]. Die Liste kann bei der Deklaration durch das Aufzählen der Elementwerte durch die folgende Anweisung initialisiert werden. int Liste [ ] = { 9, 1, 5, 3, 8 } ; (C) Harder 2007 02.12.2018
Wertzuweisung Zugriff auf die im Feld gespeicherten Werte z.B. wie folgt: x = Liste [0] ; // x wird der Wert 9 zugewiesen. y = Liste [4] ; // y wird der Wert 8 zugewiesen. x = Liste [5]; // Anweisung verursacht i. d. Regel einen Speicherzugriffsfehler, da auf Speicherbereich außerhalb des reservierten Bereichs zugegriffen wird. => Bei der Benutzung von Arrays liegt die Verantwor- tung über die Einhaltung der Bereichsgrenzen beim Java-Programmierer ! (C) Harder 2007 02.12.2018
Eingabe Die Eingabe der Werte von Liste kann z:B. mit einem Objekt sc der Klasse Scanner in einer for-Schleife erfol-gen. Dazu deklarieren wir einen Positionszähler pos, der die Zellen von 0 bis 4 zählen kann. Es ist darauf zu achten, daß die letzte Position den Wert 4 hat, pos darf daher den Wert 5 nicht mehr annehmen. for (pos = 0; pos < 5; pos ++) { Liste [ pos ] = sc.nextInt() ; } (C) Harder 2007 02.12.2018
TAB-Abstand herstellen Formatierte Ausgabe Die Werte von Liste können mit einer Schleife ausge- geben werden. Dazu deklarieren wir den Positionszähler pos, der die Zellen von 0 bis 4 zählen kann. Es ist darauf zu achten, daß die letzte Position den Wert 4 hat, pos darf daher den Wert 5 nicht mehr annehmen. for ( pos = 0 ; pos < 5 ; pos++ ) { System.out.print ( Liste [pos] ) ; System.out.print (“\t“) ; } System.out.print (“\n“) ; TAB-Abstand herstellen (C) Harder 2007 02.12.2018
TAB-Abstand herstellen Quellcode Liste.java import java.io.* ; import java.util.* ; import java.util.Scanner.* ; public class Liste { public static void main ( String args[] ) throws IOException Scanner sc = new Scanner (System.in) ; int Liste [ ] = new int [5]; int pos = 0 ; try for ( pos = 0 ; pos < 5 ; pos ++ ) Liste [pos] = sc.nextInt() ; } System.out.print (Liste [pos]) ; System.out.print ("\t") ; catch (Exception ioe) {} TAB-Abstand herstellen (C) Harder 2007 02.12.2018
Zweidimensionale Arrays (C) Harder 2007 02.12.2018
Zweidimensionale Arrays Die Deklaration zweidimensionaler Arrays ist in Java schwie-riger als z.B. in C/C++. Java unterstützt diesen Datentyp nur bedingt. Ein zweidimensionales Array kann nur dadurch dar-gestellt werden, daß man ein eindimensionales Array dekla-riert, dessen Elemente jeweils wieder Listen sind. Schema-tisch sieht das so aus: Liste mit drei Elementen (3 Zeilen (=Listen) Liste mit 4 Elementen (=4 Spalten) (C) Harder 2007 02.12.2018
Zweidimensionale Arrays Ein zweidimensionales (3,4)-Array ist wie folgt aufgebaut: zeilenpos = 0 spaltenpos = 0 3 Zeilen: 0, 1, 2 zeilenpos = 2 spaltenpos = 3 4 Spalten: 0, 1, 2, 3 (C) Harder 2007 02.12.2018
Deklaration eines zweidimensionalen Arrays Die Beispieltabelle Tabelle wird durch folgende Java-An-weisung deklariert int Tabelle [ ][ ] = new int [3][4] ; Die Tabelle ist vom Typ int. Ihre Elemente sind Integerwerte. Die Tabelle hat 12 Zellen. Die Feldelemente von Tabelle heißen Tabelle [0][0], Tabelle [0][1], Tabelle [0][2], Tabelle [0][3], .... Tabelle [2][3]. Die Tabelle kann bei der Deklaration durch das Aufzählen der Elementwerte durch die folgende Anweisung initialisiert werden: int Tabelle [ ] [ ] = { { 3, 2, 4, 3 } , { 6, 1, 4, 5 } , { 6, 7, 8, 1 } } ; (C) Harder 2007 02.12.2018
Eingabe Die Eingabe der Elemente von Tabelle kann z.B. durch eine verschachtelte Schleife erfolgen. . Dazu deklarieren wir einen Zeilenzähler zeilenpos, der die Zeilen von 0 bis 2 zählen kann. Es ist darauf zu achten, daß die letzte Position der Zeile den Wert 2 hat. Dazu deklarieren wir einen Positionszähler spaltenpos, der die Spalten von 0 bis 3 zählen kann. Es ist darauf zu achten, daß die letzte Position der Spalte den Wert 3 hat. Die äußere Schleife durchläuft die Zeilen, die innere die Spalten von Tabelle. (C) Harder 2007 02.12.2018
Ende eingelesene Zeile Eingabe Die Eingabe der Werte von Tabelle kann z.B. mit einem Ob-jekt sc der Klasse Scanner erfolgen. for ( zeilenpos = 0 ; zeilenpos < 3 ; zeilenpos++ ) { for ( spaltenpos = 0 ; spaltenpos < 4 ; spaltenpos++ ) Tabelle [zeilenpos] [spaltenpos] = sc.nextInt ( ) ; } Ende eingelesene Zeile (C) Harder 2007 02.12.2018
Formatierte Ausgabe Die Werte von Tabelle werden durch folgende Schleife zei-lenweise ausgegeben: for ( zeilenpos = 0 ; zeilenpos < 3 ; zeilenpos++ ) { for ( spaltenpos = 0 ; spaltenpos < 4 ; spaltenpos++ ) System.out.print(Tabelle [zeilenpos] [spaltenpos]); System.out.print( “\t“ ) ; } System.out.print( “\n“ ) ; Ende der Ausgabezeile erreicht Zeilenumbruch erzeugen (C) Harder 2007 02.12.2018
Quellcode Tabelle.java import java.io.* ; import java.util.* ; import java.util.Scanner.* ; public class Tabelle { public static void main ( String args[] ) throws IOException { Scanner sc = new Scanner (System.in) ; int Tabelle [ ][ ] = new int [3][4] ; int zeilenpos = 0 , spaltenpos = 0 ; try { for ( zeilenpos = 0; zeilenpos < 3 ; zeilenpos ++ ) { for ( spaltenpos = 0 ; spaltenpos < 4 ; spaltenpos ++ ) { Tabelle [zeilenpos] [spaltenpos] = sc.nextInt() ; } System.out.print (Tabelle [zeilenpos] [spaltenpos]) ; System.out.print ("\t") ; System.out.print ("\n") ; catch (Exception ioe) { } (C) Harder 2007 02.12.2018
Aufgaben Aufgaben (1) Schreiben Sie ein Java-Programm. Das Programm soll ein aus Integerwerten bestehendes (3,4)-Array einlesen und dann wahlweise eine bestimmte Zeile, eine bestimmte Spalte oder das gesamte Array ausgeben. (2) Schreiben Sie ein Java-Programm. Das Programm soll ein aus Integerwerten bestehendes (3,4)-Array einlesen und prüfen, ob ein bestimmter int-Wert (z.B. 5) ein Element des Arrays ist. Ist dies der Fall, soll die Position (Zeile, Spalte) des betreffenden Elements ausgegeben werden. (3) Schreiben Sie ein Java-Programm. Das Programm soll ein aus Integerwerten bestehendes (3,4)-Array einlesen. Das Programm soll den größten Wert des Arrays finden. Das Maximum und seine Position (Zeile, Spalte) sind auszugeben ! (C) Harder 2007 02.12.2018