Skifahrer auf umgeknickten Baumstamm

Arrays und Ihre Anwendung


Ideen: A. Maier, G. Kampa, Elektronikschule Tettnang

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.

Arrays deklarieren



Skifahrer auf umgeknickten Baumstamm

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 Zuweisungs­operator folgt das Schlüsselwort new und erneut der Datentyp, diesmal aber mit der Arraylänge.

Arrays initialisieren Arrays beschreiben und auf Werte zugreifen



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;

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];

Arrays und die Schleife Arrays automatisiert beschreiben und auslesen



int [] tagestemperatur = new int [5];

//Temperatureingabe
Scanner kb = new Scanner(System.in);
for(int i=0; i<5; 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++)

Übung 1 Wassertemperatur

Die Wassertemperatur eines Bergsees soll über eine Woche aufgezeichnet und ausgewertet werden.

  1. Lege eine neues "Java Projekt" mit alt Strg N namens 05-Arrays an.
  2. Erstelle die Klasse Wassertemperatur und deklariere das Array wassertemperatur für fünf Einträge.
  3. Lass die sieben Tageswerte mithilfe einer Schleife vom Benutzer eingeben. Gib dabei den Index für die einzelnen Tage aus.
  4. Realisiere die Ausgabe der eingegebenen Werte. Lass dabei auch die Wochentage anzeigen.

    Speicher hierzu die Wochentage in einem Array.

    String [] wochentag = {"Montag", "Dienstag", "Mittwoch", ...};
    						


  5. Berechne mit Hilfe einer Schleife den Mittelwert der Wassertemperatur.
Bergsee

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


Mehrdimensionale Arrays



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

Übung 2 Welche Aussage ist wahr

Wähle die korrekten Aussagen aus.

Welche Deklaration ist korrekt? Wähle zwei.

  1. int [] zahl = new int [5];
  2. int [] zahl = new int 5;
  3. int zahl [] = new int [5];


Finde die Anzahl der Fehler im folgenden Quelltext.

int [] temperatur = {2.3,2,5,6};
System.out.println(temperatur[3] + "°C");
System.out.println(temperatur[4] + "°C");


Übung 3 Adressbuch

  1. Erstelle die Klasse Adressbuch und definiere das Array adressen mit fünf Einträgen. Davon sollten zwei Einträge den identischen Wohnort haben.
  2. Lass alle Vornamen mithilfe einer Schleife ausgeben.
  3. Gib alle Nachnamen in einer Zeile, mit Komma getrennt aus.
  4. Gib alle Adressen mit gleichem Wohnort aus.
  5. Schreibe einen Algorithmus der die Einträge alphabetisch sortiert.
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:


  1. String[][] adressen = { ... };

  2. System.out.println(adressen[i][0]);

  3. System.out.print(adressen[i][1]);
    if(i<4)  System.out.print(", ");

  4. if(adressen[i][3]=="88069 Tettnang") {
       ...

Übung 4 Lottoprogramm

Lottoziehung

❷ ❶ ❺ ❸ ❽


  1. Erstelle die Klasse 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.
  2. Speicher auf dem Array lottotip fünf vom Benutzer eingegebene Werte.
  3. Speicher auf dem Array 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);
    						

  4. Gib die Ziehung, den Tip und die Anzahl der Richtigen aus.
  5. Beschreibe, wie man die sechs Zufallszahlen eines Würfels erzugen kann.
  6. Erweitere das Programm so, dass keine doppelten gezogen werden können.

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!


Übung 5 Fibonacci

Fibonaccizahlen ist eine Reihe von Zahlen. Sie berechnen sich immer aus der Summe der beiden vorherigen Zahlen.

  1. Erstelle die Klasse Fibonacci welche die ersten 20 Fibonacci­zahlen in einem Array speichert. Deklariere das Array fibonaccizahlen.
  2. Befülle das Array fibonaccizahlen mit den ersten 20 Fibonacci­zahlen.

    Die ersten beiden Werte trägt man manuell ein. Danach kann man die aktuelle Fibonacci­zahl immer aus den beiden vorherigen berechnen:

    fibonaccizahlen[i] = fibonaccizahlen[i-1] + fibonaccizahlen[i-2] ;
    						

  3. Gib die Zahlen am Bildschirm aus.

Fibonaccizahlen

❶ ❷ ❸ ❺ ❽ ...


Die Lösung sollten folgende Programmteile enthalten:


  1. int [] fibonaccizahlen = new int [20];
    fibonaccizahlen[0] = 1;
    fibonaccizahlen[1] = 2;

  2. fibonaccizahlen[i] = fibonaccizahlen[i-2]+fibonaccizahlen[i-1];

  3. System.out.println("Zahl " +(i+1)+ ": "+fibonaccizahlen[i]);

Übung 6 Corona

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
}
					
  1. Erstelle die Klasse Corona welche die Anzahl der Coronainfizierten simuliert.
  2. Speicher auf dem Array 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.

  3. Stelle fest, ob mindestens einer infiziert ist.
  4. Stelle fest, ob alle infiziert sind. Verändere dazu die Infektionswahrscheinlichkeit auf 95 %.

Die Ausgabe sollte bspw. folgendermaßen aussehen:

Zufallswerte: 87 90 9 32 9 55 6 4 18 82
4 Infizierte


Sortieralgorithmen Bubble-Sort



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
    }
  }
}

Übung 7 Zahlenreihen sortieren

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
    }
  }
}
  1. Erstelle die Klasse BubbleSort welche eine Zahlenreihe sortiert.
  2. Speicher auf dem Array zahlenreihe 10  Werte vom Datentyp int. Achte darauf, dass die Werte unsortiert sind. Gib Werte am Monitor aus.
  3. Sortiere die Zahlenreihe mit dem Bubble-Sort-Algorithmus und gib die sortierte Reihe aus. Optimiere den Algorithmus, so dass die innere Schleife das letzte Element des vorherigen Durchlaufs nicht mehr beachtet, da das restliche Array keine kleineren Einträge mehr hat.

    Man verwendet die verschachtelte for-Schleife zum Sortieren.

    Zum Tauschen der Zahlen wird ein Eintrag auf einer Hilfsvariablen gespeichert.

  4. Erstelle die Zahlenreihe, indem wie beim Lottoprogramm 10 Zahlen zufällig bestimmt werden.
  5. Achte darauf, dass keine doppelten Zahlen in der Reihe vorkommen.
  6. Sortiere die Zahlenreihe mit alternativen Sortieralgorithmen, wie den Insertion-Sort- und Selection-Sort-Algorithmus.
  7. Wieviele Durchläufe benötigt der Bubble-Sort-Algorithmus maximal. Bewerte die Zeitdauer der verschiedenen Sortieralgorithmen.

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


Wortliste und Satzbausteine



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 zwei­dimen­sionale Array, -s ein Array mit Spalten und Zeilen
die Deklaration eines zwei­dimen­sionalen Arrays
int[] matrix = new int[5][7];
der Bubble-Sort-Algorithmus Sortieralgorithmus der auf Basis von Vergleichen eine Zahlenreih sortiert
© mylime.info