Lektion 11: Arrays
In der letzten Lektion habt ihr Strings näher kennen gelernt. Strings sind im Endeffekt eine Liste von einzelnen Zeichen, die zusammengenommen einen Text ergeben. Heute betrachten wir weitere Listen, die nicht nur Zeichen beinhalten können: Die sogenannten Arrays.
Fachkonzept Array
Übung 1
Erstellt für die Datensätze unten jeweils eine Java-Datei mit Main-Methode nach der Vorlage rechts.
Erstellt jeweils ein Array, in dem ihr die Daten des entsprechenden Datensatzes speichern könnt.
Schreibt Code für die Ausgabe der Werte.
public class ArrayDatensatz1 {
public static void main(String[] args) {
// Hier wird der Array deklariert und initialisiert
int[] daten = ...;
// Hier werden die Daten gespeichert
daten[0] = ...;
// Hier werden die Daten ausgelesen
Konsole.schreibeZeile(...);
}
}
Datensatz 1
Erstellt ein int-Array:
Datensatz 2
Erstellt ein int-Array:
Datensatz 3
Erstellt ein double-Array, indem ihr die Werte in Millionen eintragt (z.B. 1.5
statt 1500000
):
Datensätze 4, 5 & 6
Denkt euch weitere Datensätze aus, die ihr speichern könnt:
Einen int[]
Einen double[]
Einen String[]
Lösungen für Datensätze 1-3
ArrayDatensatz1.java
public class ArrayDatensatz1 {
public static void main(String[] args) {
// Hier wird der Array deklariert und initialisiert
int[] daten = new int[4];
// Hier werden die Daten gespeichert
daten[0] = 10;
daten[1] = 9;
daten[2] = 6;
daten[3] = 4;
// Hier werden die Daten ausgelesen
Konsole.schreibeZeile("Jan: " + daten[0]);
Konsole.schreibeZeile("Jasmina: " + daten[1]);
Konsole.schreibeZeile("Merle: " + daten[2]);
Konsole.schreibeZeile("Tobi: " + daten[3]);
}
}
ArrayDatensatz2.java
public class ArrayDatensatz2 {
public static void main(String[] args) {
// Hier wird der Array deklariert und initialisiert
int[] daten = new int[12];
// Hier werden die Daten gespeichert
daten[0] = 1500000;
daten[1] = 1750000;
daten[2] = 2000000;
daten[3] = 1750000;
daten[4] = 2250000;
daten[5] = 2500000;
daten[6] = 2750000;
daten[7] = 3250000;
daten[8] = 2750000;
daten[9] = 3250000;
daten[10] = 2250000;
daten[11] = 2000000;
// Hier werden die Daten ausgelesen
Konsole.schreibeZeile("Januar: " + daten[0]);
Konsole.schreibeZeile("Februar: " + daten[1]);
Konsole.schreibeZeile("März: " + daten[2]);
Konsole.schreibeZeile("April: " + daten[3]);
Konsole.schreibeZeile("Mai: " + daten[4]);
Konsole.schreibeZeile("Juni: " + daten[5]);
Konsole.schreibeZeile("Juli: " + daten[6]);
Konsole.schreibeZeile("August: " + daten[7]);
Konsole.schreibeZeile("September: " + daten[8]);
Konsole.schreibeZeile("Oktober: " + daten[9]);
Konsole.schreibeZeile("November: " + daten[10]);
Konsole.schreibeZeile("Dezember: " + daten[11]);
}
}
ArrayDatensatz3.java
public class ArrayDatensatz3 {
public static void main(String[] args) {
// Hier wird der Array deklariert und initialisiert und gleich mit den Datensätzen gefüllt
double[] daten = {
1.50, 1.75, 2.00, 1.75, 2.25, 2.50,
2.75, 3.25, 2.75, 3.25, 2.25, 2.00
};
// Hier werden die Daten ausgelesen
Konsole.schreibeZeile("Januar: " + daten[0] + " Mio.");
Konsole.schreibeZeile("Februar: " + daten[1] + " Mio.");
Konsole.schreibeZeile("März: " + daten[2] + " Mio.");
Konsole.schreibeZeile("April: " + daten[3] + " Mio.");
Konsole.schreibeZeile("Mai: " + daten[4] + " Mio.");
Konsole.schreibeZeile("Juni: " + daten[5] + " Mio.");
Konsole.schreibeZeile("Juli: " + daten[6] + " Mio.");
Konsole.schreibeZeile("August: " + daten[7] + " Mio.");
Konsole.schreibeZeile("September: " + daten[8] + " Mio.");
Konsole.schreibeZeile("Oktober: " + daten[9] + " Mio.");
Konsole.schreibeZeile("November: " + daten[10] + " Mio.");
Konsole.schreibeZeile("Dezember: " + daten[11] + " Mio.");
}
}
Fachkonzept for-Schleife
Lest das Fachkonzept: for-Schleife durch und beantwortet folgende Fragen:
Was unterscheidet die for- von der while-Schleife?
Warum ist es im Kontext von Arrays sinnvoller, eine for-Schleife statt einer while-Schleife zu verwenden?
Für Interessierte: Welche Zahlenfolge wurde im unteren Beispiel verwendet?
Übung 2
Passt eure Lösungen aus Übung 1 so an, dass for-Schleifen verwendet werden. Tipp: Die "Namen" der Indizes (Klassensprecherkandidaten / Monate) kann man in einem String[] speichern!
Lösungen zu Aufgabe 2
ArrayForDatensatz1.java
public class ArrayForDatensatz1 {
public static void main(String[] args) {
// Hier wird der Array deklariert und initialisiert
int[] daten = new int[4];
String[] namen = new String[4];
// Hier werden die Daten gespeichert
daten[0] = 10;
daten[1] = 9;
daten[2] = 6;
daten[3] = 4;
namen[0] = "Jan";
namen[1] = "Jasmina";
namen[2] = "Merle";
namen[3] = "Tobi";
// Hier werden die Daten ausgelesen
for (int index = 0; index < 4; index++) {
Konsole.schreibeZeile(namen[index] + ": " + daten[index]);
} // end of for
}
}
ArrayForDatensatz2.java
public class ArrayForDatensatz2 {
public static void main(String[] args) {
// Hier wird der Array deklariert und initialisiert
int[] daten = new int[12];
String[] monate = new String[12];
// Hier werden die Daten gespeichert
daten[0] = 1500000;
daten[1] = 1750000;
daten[2] = 2000000;
daten[3] = 1750000;
daten[4] = 2250000;
daten[5] = 2500000;
daten[6] = 2750000;
daten[7] = 3250000;
daten[8] = 2750000;
daten[9] = 3250000;
daten[10] = 2250000;
daten[11] = 2000000;
monate[0] = "Januar";
monate[1] = "Februar";
monate[2] = "März";
monate[3] = "April";
monate[4] = "Mai";
monate[5] = "Juni";
monate[6] = "Juli";
monate[7] = "August";
monate[8] = "September";
monate[9] = "Oktober";
monate[10] = "November";
monate[11] = "Dezember";
// Hier werden die Daten ausgelesen
for (int index = 0; index < 12; index++) {
Konsole.schreibeZeile(monate[index] + ": " + daten[index]);
} // end of for
}
}
ArrayForDatensatz3.java
public class ArrayForDatensatz3 {
public static void main(String[] args) {
// Hier wird der Array deklariert und initialisiert
double[] daten = {
1.50, 1.75, 2.00, 1.75, 2.25, 2.50,
2.75, 3.25, 2.75, 3.25, 2.25, 2.00
};
String[] monate = {
"Januar", "Februar", "März", "April", "Mai", "Juni",
"Juli", "August", "September", "Oktober", "November", "Dezember"
};
// Hier werden die Daten ausgelesen
for (int index = 0; index < monate.length; index++) {
Konsole.schreibeZeile(monate[index] + ": " + daten[index]);
} // end of for
}
}
Übung 3
Kopiert den folgenden Code in eine neue Java-Datei und probiert ihn ein paar mal aus. Beantwortet die folgenden Fragen:
public class Geheimnis {
public static void main(String[] args) {
// Abschnitt 1
int laenge = Konsole.leseZahl("Wie viele Einträge? > ");
int[] daten = new int[laenge];
// Abschnitt 2
for (int i = 0; i < daten.length; i += 1) {
int datensatz = Konsole.leseZahl("Datensatz Nr. " + i + "? > ");
daten[i] = datensatz;
}
// Abschnitt 3
double geheimnis1 = 0;
for (int i = 0; i < daten.length; i++) {
geheimnis1 += daten[i];
}
// Abschnitt 4
double geheimnis2 = geheimnis1 / daten.length;
// Abschnitt 5
Konsole.schreibeZeile("Geheimnis 1 = " + geheimnis1);
Konsole.schreibeZeile("Geheimnis 2 = " + geheimnis2);
}
}