Arrays sind Datenfelder die zur Speicherung mehrerer Werte eines Datentyps dienen. Dies ist dann bspw. sinnvoll, wenn wir eine ganze Reihe von Tagestemperaturen speichern wollen. Man würde nämlich sonst für jeden Tag eine eigene Variable deklarieren müssen.
In diesem Artikel lernst Du den Aufbau von Arrays, wie man sie beschreibt und ausließt. Dabei lernst du auch die Anwendung verschiedener Datentypen und mehrdimensionale Arrays kennen und anwenden.
Die Tagestemperaturen von 5 Tagen sollen gespeichert werden.
Um nun nicht fünf Variablen zu benötigen, deklariert man ein Array.
int[] tagestemperatur = new int[5];Dieses Array beginnt mit dem Array-Datentyp, gefolgt von zwei eckigen Klammern. Dann folgt der Array-Name. Nach dem Zuweisungsoperator folgt das Schlüsselwort
new
und erneut der Datentyp, diesmal aber mit der Arraylänge.
Ein Array wird über den Index beschrieben. Man beachte, dass der Index eines Arrays immer mit 0 beginnt. Auch eine gleichzeitige Deklaration und Initialisierung, die sogenannte Definition ist möglich.
int[] tagestemperatur = {-2,-1,1,0,-1};
Auch der Zugriff auf einen Arrayeintrag erfolgt über dessen Index.
int x = tagestemperatur [3];
Tag | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
Temperatur | -2 | -1 | 1 | 0 | -1 |
Array initialisieren
int[] tagestemperatur = new int[5]; tagestempertatur[0] = -2; tagestempertatur[1] = -1; tagestempertatur[2] = 1; tagestempertatur[3] = 0; tagestempertatur[4] = -1;
int [] tagestemperatur = new int [7]; //Temperatureingabe Scanner kb = new Scanner(System.in); for(int i=0; i<7; i++) { System.out.print("Temperatur Tag " + (i+1) +": "); tagestemperatur[i] = kb.nextInt(); } //Temperaturausgabe for(int i=0; i<7; i++) { System.out.println(tagestemperatur[i] + "°C"); }
Das automatisierte Beschreiben und Auslesen eines Arrays erfolgt mit einer Schleife. Dazu lässt man einfach den Index durchzählen.
Möchte man den Index als Tagesnummer mit ausgeben, muss zum Index immer noch eins dazu addiert werden.
Alternativ kann man die Arraylänge auch mit der eigenschaft length
ermitteln.
for(int i=0; i<tagestemperatur.length; i++)
Die Wassertemperatur eines Bergsees soll über eine Woche aufgezeichnet und ausgewertet werden.
wassertemperatur
für sieben Einträge.Speicher hierzu die Wochentage in einem Array.
String [] wochentag = {"Montag", "Dienstag", "Mittwoch", ...};
Die Ausgabe sollte wie folgt aussehen:
Wassertemperatureingabe
Temperatur Tag 1: -2
Temperatur Tag 2: -1
Temperatur Tag 3: 1
Temperatur Tag 4: 0
Temperatur Tag 5: -1
Temperatur Tag 6: 0
Temperatur Tag 7: -2
Die Wassertemperaturen im Überblick:
Montag -2°C
Dienstag -1°C
Mittwoch 1°C
Donnerstag 0°C
Freitag -1°C
Samstag 0°C
Sonntag -2°C
Die Wochendurchschnittstemperatur beträgt: -0,71 °C
Wähle die korrekten Aussagen aus.
Welche Deklaration ist korrekt?
Wähle zwei Antworten.
int [] zahl = new int [5];
int [] zahl = new int 5;
int zahl [] = new int [5];
int zahl [5];
Greife auf den 2. Wert des Arrays temp
zu.
Wähle eine Antwort.
int x = temp[0];
int x = temp[1];
int x = temp[2];
int x = temp[3];
Finde die Anzahl der Fehler im folgenden Quelltext.
int [] temp = {2.3,2,5,6};
System.out.println(temp[3] + "°C");
System.out.println(temp[4] + "°C");
Finde die Anzahl der Fehler im folgenden Quelltext.
double [] temp = {2.3,2.1,5.0,6.0,-0.1};
System.out.println(temp[3] + "°C");
System.out.println(temp[4] + "°C");
Gib alle Elemente des Arrays aus.
int [] x = {9,2,5,6};
Wähle zwei Antworten.
for(int i=1;i<5;i++) System.out.print(x[i]);
for(int i=0;i<4;i++) System.out.print(x[i]);
for(int i=1;i<=4;i++) System.out.print(x[i-1]);
for(int i=1;i<=4;i++) System.out.print(x[i+1]);
Gib alle Elemente des Arrays aus.
double [] x = {0.3,0.2,5,6};
Wähle eine Antwort.
for(int i=1;i<5;i++) System.out.print(x[i-1]);
for(int i=0;i<3;i++) System.out.print(x[i]);
for(int i=1;i<=4;i++) System.out.print(x[i]);
for(int i=1;i<=4;i++) System.out.print(x[i+1]);
Lies den 3. und 4. Wert des Arrays ein.
int [] zahl = new int [5];
Wähle eine Antwort.
for(int i=3;i<4;i++) zahl[i] = kb.nextInt();
for(int i=4;i<5;i++) zahl[i] = kb.nextInt();
for(int i=2;i<4;i++) zahl[i] = kb.nextInt();
for(int i=0;i<4;i++) zahl[i] = kb.nextInt();
Überschreibe den 1. und 2. Wert.
int [] x = {3,2,5,6};
Wähle eine Antwort.
for(int i=3;i<=4;i++) x[i-2] = kb.nextInt();
for(int i=4;i<5;i++) x[i] = kb.nextInt();
for(int i=1;i<2;i++) x[i-1] = kb.nextInt();
for(int i=1;i<=2;i++) x[i-1] = kb.nextInt();
Auch mehrdimensionale Arrays sind möglich. Ein zweidimensionales Array gleicht einer Tabelle. Eine 4x4-Matrix bildet man wie folgt ab:
int[][] matrix = new int[4][4];
Ein Adressbuch kann man bspw. wie folgt erstellen:
String[][] adressen = { { "Max", "Mustermann", "Musterstr. 3", "71289 Musterstadt" }, { "John", "Doe", "232 Washington Street", "San Diego 92101" }, { ... }};
Vorname | Name | Straße | Ort |
---|---|---|---|
Max | Mustermann | Musterstr. 3 | 71289 Musterstadt |
John | Doe | 232 Washington Street | San Diego 92101 |
Jane | Doe | 64 Munich Street | Washington 20005 |
Adressbuch
und definiere das Array adressen
mit fünf Einträgen. Davon sollten zwei Einträge den identischen Wohnort haben.Vorname | Name | Straße | Ort |
---|---|---|---|
John | Doe | 232 Washington Street | San Diego 92101 |
Jane | Doe | 64 Munich Street | Washington 20005 |
Die Lösung sollten folgende Programmteile enthalten:
String[][] adressen = { ... };
System.out.println(adressen[i][0]);
System.out.print(adressen[i][1]);
if(i<4) System.out.print(", ");
if(adressen[i][3]=="88069 Tettnang") {
...
Lotto
welche die Ziehung von fünf Lottozahlen zwischen 0 und 9 simuliert. Erstelle die zwei Arrays lottoziehung
und lottotip
mit fünf Einträgen. Doppelte Zahlen sind zulässig.lottotip
fünf vom Benutzer eingegebene Werte.lottoziehung
fünf zufällige Werte zwischen 0 und 9.Erzeugung einer Zufallszahl zwischen 0 und 9:
lottoziehen[i] = new java.util.Random().nextInt(10);
Die Ausgabe sollte wie folgt aussehen:
Tip abgeben:
Zahl 1: 2
Zahl 2: 2
Zahl 3: 2
Zahl 4: 2
Zahl 5: 2
Die Lottozahlen:
5 2 9 9 3
Ihr Tip:
2 2 2 2 2
Sie haben 1 Richtige!
Fibonaccizahlen ist eine Reihe von Zahlen. Sie berechnen sich immer aus der Summe der beiden vorherigen Zahlen.
Fibonacci
welche die ersten 20 Fibonaccizahlen in einem Array speichert. Deklariere das Array fibonaccizahlen
.fibonaccizahlen
mit den ersten 20 Fibonaccizahlen.Die ersten beiden Werte trägt man manuell ein. Danach kann man die aktuelle Fibonaccizahl immer aus den beiden vorherigen berechnen:
fibonaccizahlen[i] = fibonaccizahlen[i-1] + fibonaccizahlen[i-2] ;
Die Lösung sollten folgende Programmteile enthalten:
int [] fibonaccizahlen = new int [20];
fibonaccizahlen[0] = 1;
fibonaccizahlen[1] = 2;
fibonaccizahlen[i] = fibonaccizahlen[i-2]+fibonaccizahlen[i-1];
System.out.println("Zahl " +(i+1)+ ": "+fibonaccizahlen[i]);
Idee: Prof. Dr. M. Kipp, Hochschule Augsburg
boolean[] corona = new boolean[10]; for(int i = 0; i < corona.length; i++) { // Dein Code System.out.println(corona[i]); // Kontrolle }
Corona
welche die Anzahl der Coronainfizierten simuliert.corona
10 Werte vom Datentyp boolean
. Da das Infektionsrisiko bei 10 % liegt, setze mit Hilfe einer Schleife jeden Wert mit 10 % Wahrscheinlichkeit auf true
.Für ein Infektionsrisiko von 10 % kann man bspw. eine Zufallszahl zwischen 1 und 100 erzeugen. Dann prüft man, ob die Zahl zwischen 1 und 10 liegt. Falls ja, ist die Person infiziert.
Die Ausgabe sollte bspw. folgendermaßen aussehen:
Zufallswerte: 87 90 9 32 9 55 6 4 18 82
4 Infizierte
Ein kleiner Vogel flog wegen des Winters in den Süden.
Er war jedoch spät dran und es war schon sehr kalt. Der Vogel fiel steif gefroren auf den Boden. Während er dort so lag, kam eine Kuh des Weges und ließ einen Fladen auf ihn fallen. Der tiefgefrorene Vogel begann aufzutauen und merkte, wie schön warm es in dem Kuhfladen war. Er war so froh darüber, dass er einen Freudengesang anstimmte.
Eine vorbeikommende Katze hörte ihn, folgte dem Gesang, fand den Vogel, holte ihn unter dem Kuhfladen hervor und fraß ihn auf!
Die Moral von der Geschichte:
Um Zahlenreihen zu sortieren gibt es viele Sortieralgorithmen
int[] reihe = {7,4,9,2,3};
Der Bubble-Sort-Algorithmus gehört zu einem der einfachen Algorithmen. Dabei wird die Reihe von links nach rechts durchlaufen und benachbarte Zahlen der Reihe miteinander verglichen sowie ggf. vertauscht. Wie Luftblasen im Wasser aufsteigen, bewegen sich dabei die größeren Zahlen schrittweise nach rechts. Beim ersten Durchlauf wird zumindest die größte Zahl ganz nach rechts geschoben, beim zweiten Durchlauf die zweitgrößte Zahl u.s.w. Dazu verwendet man zwei ineinander verschachtelte for-Schleifen:
for(int n=4; n>0; n--) { for(int i=0; i<4; i++) { if(reihe[i]>reihe[i+1]) { //Tauschen } } }
Autoren: D. Supper, A. Maier |binnendifferenziert
int [] zahlenreihe = {4,5,1,9,2,...}; for(int n=10; n>0; n--) { for(int i=0; i<9; i++) { if(zahlenreihe[i]>zahlenreihe[i+1]) { //Dein Code zum Tauschen zweier Elemente } } }
BubbleSort
welche eine Zahlenreihe sortiert.zahlenreihe
10 Werte vom Datentyp int
. Achte darauf, dass die Werte unsortiert sind. Gib Werte am Monitor aus.
Man verwendet die verschachtelte for-Schleife zum Sortieren.
Zum Tauschen der Zahlen wird ein Eintrag auf einer Hilfsvariablen gespeichert.
Die Ausgabe sollte bspw. folgendermaßen aussehen:
Die unsortierte Zahlenreihe:
16 17 8 4 3 19 14 10 5 1
Die sortierte Zahlenreihe:
1 3 4 5 8 10 14 16 17 19
3 Schafe und 3 Wölfe fliehen vor einem Feuer.
Dabei müssen Sie einen Fluss mit einem Floß überqueren. Damit die Schafe von den Wölfen nicht gefressen werden, dürfen sie auf keiner Seite zu keiner Zeit in Unterzahl sein. Auf dem Floß haben immer nur 2 Tiere Platz.
Bestimme die Anzahl der notwendigen Floßfahrten, so dass keines der Tiere verloren geht.
Fertige eine Skizze an.
Es sind sechs Floßfahrten notwendig.
das Array, -s | ein Datenfeld, das zur Speicherung mehrerer Werte eines Datentyps dient |
der Index, Indizes | Nummer einzelner Zellen eines Datenfeldes über den der Zugriff erfolgt |
die Deklaration eines Arrays | int[] werte = new int[5]; |
das zweidimensionale Array, -s | ein Array mit Spalten und Zeilen |
die Deklaration eines zweidimensionalen Arrays | int[] matrix = new int[5][7]; |
der Bubble-Sort-Algorithmus | Sortieralgorithmus der auf Basis von Vergleichen eine Zahlenreih sortiert |