Array: Unterschied zwischen den Versionen
Zeile 155: | Zeile 155: | ||
In Java kann man auch zwei- (und mehr-) dimensionale Arrays realisieren. | In Java kann man auch zwei- (und mehr-) dimensionale Arrays realisieren. | ||
== | ==Beispiel1: Einmal-Eins-Tabelle== | ||
Am folgenden Beispiel kann man sehen, wie man ein zweidimensionales Array... | |||
* deklariert, | |||
* erzeugt, | |||
* mit einer doppelten Schleife durchläuft, | |||
* einzelne Felder ausliest. | |||
<code> | |||
public class EinmalEins { | |||
// ein zweidimensionales Array deklarieren | |||
'''public int[][] tabelle;''' | |||
public EinmalEins(){ | |||
// ein zweidimensionales Array der Groesse 10x10 erzeugen. | |||
'''tabelle = new int[10][10];''' | |||
// das Array belegen: | |||
// die Zeilen des Arrays (von oben nach unten) mit einer Schleife durchlaufen | |||
'''for (int i = 0; i < tabelle.length; i++) {''' | |||
die i-te Zeile des Arrays mit einer Schleife durchlaufen | |||
'''for (int j = 0; j < tabelle[i].length; j++) {''' | |||
// Auf das Feld (i|j) das Produkt eintragen | |||
'''tabelle[i][j] = i*j'''; | |||
} | |||
} | |||
} | |||
public int multipliziere(int zahl1, int zahl2){ | |||
int ergebnis = '''tabelle[zahl1][zahl2]'''; | |||
return ergebnis; | |||
} | |||
} | |||
</code> | |||
==Beispiel: Entfernungstabelle== | ==Beispiel: Entfernungstabelle== |
Version vom 27. März 2014, 20:11 Uhr
Arrays dienen zur Speicherung von vielen gleichartigen Elementen (z.B. Zahlen) oder Objekten (z.B. vom Typ Person
).
Veranschaulichung
Hier ist ein Array mit 5 Namen (in Java: String
) dargestellt:
Index | 0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|
Wert | "Meier" | "Schmidt" | "Müller" | "Franzen" | "Altenburg" |
Zu beachten ist:
- Arrays fangen grundsätzlich mit dem Index 0 an.
- Der letzte Index ist deswegen eins niedriger als die Länge des Arrays.
Vorteile und Nachteile
- Vorteil: In einem Array kann man jedes einzelne Element über eine Nummer, den sog. Index, direkt ansprechen.
- Nachteil: Man muss direkt zu Anfang die Größe des Arrays festlegen. D.h. man kann nicht nachträglich beliebig viele Elemente hinzufügen.
Arrays in Java
Ein Array deklarieren
Beispiel: Hier werden deklariert:
- ein Array für Strings,
- ein Array für Objekte vom Typ
Person
- ein Array für Integer-Zahlen:
String[] namen;
Person[] personen;
int[] zahlen;
Damit ist noch nicht die Länge des Arrays festgelegt und es ist noch nichts eingetragen! Das Array hat so den Wert null
.
Ein Array als leeres Array initialisieren
'Beispiel: Hier werden als leeres Array initialisiert:
- Ein Array mit 5 Plätzen für Strings,
- ein Array mit 10 Plätzen für Objekte vom Typ
Person
- ein Array mit 200 Plätzen für Integer-Zahlen:
String[] namen = new String[5];
Person[] personen = new Person[10];
int[] zahlen = new int[200];
- In den Arrays
namen
undpersonen
sind damit 5 (bzw. 10) leere Plätze entstanden - dort steht als Wert jeweilsnull
. - Im Array
zahlen
dagegen ist 200mal die Zahl 0 eingetragen.
Ein Array mit vorgegebenen Werten initalisieren
Oft weiß man schon bei der Deklaration eines Arrays, welche Werte es haben soll. Das lässt sich in Java wie folgt realisieren.
Beispiel: Die folgende Tabelle soll als Array namen
initialisiert werden:
Index | 0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|
Wert | "Meier" | "Schmidt" | "Müller" | "Franzen" | "Altenburg" |
String[] namen = {"Meier", "Schmidt", "Müller", "Franzen", "Altenburg"};
Die Länge eines Arrays bestimmen
Mit dem Schlüsselwort length
kann man bestimmen, wie viele Einträge ein Array hat.
Beispiel: Das Array namen
soll folgenden Inhalt haben:
Index | 0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|
Wert | "Meier" | "Schmidt" | "Müller" | "Franzen" | "Altenburg" |
Dieses Array hat 5 Einträge (von Index 0 bis Index 4).
int anzahl = namen.length;
// anzahl hat jetzt den Wert 5.
Einzelne Elemente in einem Array ansprechen
Beispiel:
Index | 0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|
Wert | "Meier" | "Schmidt" | "Müller" | "Franzen" | "Altenburg" |
Der folgende Code...
- liest den Wert bei Index 3 in die Variable
derName
aus, - trägt am Index 2 den Wert "Marten" ein.
String derName = namen[3];
// derName enthaelt jetzt den Wert "Franzen"
namen[2] = "Marten"
D.h. das Array sieht jetzt so aus:
Index | 0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|
Wert | "Meier" | "Schmidt" | "Marten" | "Franzen" | "Altenburg" |
Ein Array mit einer for
-Schleife durchlaufen
Um ein Array von Anfang bis Ende zu durchlaufen, nimmt man eine for
-Schleife.
Beispiel: Der folgende Code gibt alle Werte des Array namen
an die Konsole aus.
String[] namen = {"Meier", "Schmidt", "Müller", "Franzen", "Altenburg"};
for(int i=0; i<namen.length; i++){
System.out.println(namen[i]);
}
Ein Array mit einer for
-Schleife initialisieren
Man kann die Werte eines Arrays auch mit einer for
-Schleife initialisieren.
Beispiel:
Der folgende Code initalisiert die Werte des Arrays dreierReihe
mit den Zahlen 0, 3, 6, 9, ..., 3000
int[]dreierReihe = new int[1001];
for(int i=0; i<dreierReihe.length; i++){
dreierReihe[i] = i*3;
}
Ein Array sortieren
Dafür bietet sich als einfachstes Verfahren Bubblesort an.
Zweidimensionale Arrays
In Java kann man auch zwei- (und mehr-) dimensionale Arrays realisieren.
Beispiel1: Einmal-Eins-Tabelle
Am folgenden Beispiel kann man sehen, wie man ein zweidimensionales Array...
- deklariert,
- erzeugt,
- mit einer doppelten Schleife durchläuft,
- einzelne Felder ausliest.
public class EinmalEins {
// ein zweidimensionales Array deklarieren
public int[][] tabelle;
public EinmalEins(){
// ein zweidimensionales Array der Groesse 10x10 erzeugen.
tabelle = new int[10][10];
// das Array belegen:
// die Zeilen des Arrays (von oben nach unten) mit einer Schleife durchlaufen
for (int i = 0; i < tabelle.length; i++) {
die i-te Zeile des Arrays mit einer Schleife durchlaufen
for (int j = 0; j < tabelle[i].length; j++) {
// Auf das Feld (i|j) das Produkt eintragen
tabelle[i][j] = i*j;
}
}
}
public int multipliziere(int zahl1, int zahl2){
int ergebnis = tabelle[zahl1][zahl2];
return ergebnis;
}
}
Beispiel: Entfernungstabelle
Die folgende Klasse Entfernungstabelle
zeigt, wie man ...
- ein zweidimensionales Array durchlaufen kann.
- einzelne Werte aus einem zweidimensionalen Array auslesen kann.
public class Entfernungstabelle {
private String[] alleStaedte =
{
"Berlin","Dortmund",
"Dresden","Erfurt",
"Frankfurt","Halle",
"Hannover","Kassel",
"Koeln","Leipzig",
"Magdeburg"
};
// das zweidimensionale Array alleEntfernungen
// wird direkt mit Werten belegt!
private int[][] alleEntfernungen =
{
// B, DO, DD, ER, F,HAL, H, KA, K, L, MD
{ 0,512,297,327,660,229,299,465,609,187,153}, // B
{512, 0,553,354,226,535,213,163, 97,493,359}, // DO
{297,553, 0,199,585,152,390,390,650,110,244}, // DD
{327,354,199, 0,386,182,357,191,451,140,274}, // ER
{660,226,585,386, 0,568,361,195,187,526,507}, // F
{229,535,152,182,568, 0,322,373,632, 42,176}, // HAL
{299,213,390,357,361,322, 0,166,310,280,146}, // H
{465,163,390,191,195,373,166, 0,260,331,312}, // KA
{609, 97,650,451,187,632,310,260, 0,591,456}, // K
{187,493,110,140,526, 42,280,331,591, 0,134}, // L
{153,359,244,274,507,176,146,312,456,134, 0} // MD
};
public void tabelleAusgeben(){
// alle Zeilen durchlaufen
for (int i = 0; i < alleEntfernungen.length; i++) {
System.out.print(alleStaedte[i]+": ");
// in der Zeile die einzelnen Felder durchlaufen
for (int j = 0; j < alleEntfernungen.length; j++) {
System.out.print(alleEntfernungen[i][j]+", ");
}
System.out.println();
}
}
// sucht zu einer Stadt den richtigen Index in der Entfernungstabelle
public int findeStadtIndex(String pStadt){
for (int i = 0; i < alleStaedte.length; i++) {
if(alleStaedte[i].equals(pStadt)){
return i;
}
}
// Stadt nicht gefunden!
return -1;
}
private int entfernungMessen(String pStadt1, String pStadt2) {
int index1 = this.findeStadtIndex(pStadt1);
int index2 = this.findeStadtIndex(pStadt2);
int ergebnis = this.alleEntfernungen[index1][index2];
return ergebnis;
}
public static void main(String[] args) {
// die gewuenschte Methode einkommentieren!
Entfernungstabelle et = new Entfernungstabelle();
et.tabelleAusgeben();
int entfernung = et.entfernungMessen("Erfurt", "Koeln");
System.out.println("Von Erfurt nach Koeln sind's: "+entfernung+" km");
}
}