Benutzer:Nicolas
Datenstrukturen: Arrays Ein Array ist eine Datenstruktur, die mehrere Werte desselben Datentyps in einer festgelegten Reihenfolge speichert.
Elemente sind nummeriert (Index beginnt bei 0). Sie können abgerufen, verändert oder überschrieben werden. Die Größe eines Arrays ist nach der Initialisierung unveränderlich. Beispiel Array-Deklaration und Initialisierung:
java Code kopieren String[] zutaten; String[] zutaten = new String[5]; // Array mit 5 Werten Array mit konkreten Werten initialisieren: java Code kopieren String[] zutaten = {"Butter", "Zucker", "Eier", "Mehl", "Backpulver"}; Umgang mit Elementen (Abrufen und Überschreiben): java Code kopieren String[] zutaten = {"Butter", "Zucker", "Eier", "Mehl", "Backpulver"};
// Abrufen des vierten Elements (Index 3 -> "Mehl") String element = zutaten[3]; System.out.println(element); // Ausgabe: Mehl Eingaben zur Laufzeit in Java In vielen Fällen sind die benötigten Daten für ein Programm nicht im Voraus bekannt und müssen daher zur Laufzeit erfasst werden. Eine der häufigsten Methoden zur Datenerfassung ist die Nutzereingabe über die Tastatur. Java stellt dafür den Scanner zur Verfügung.
Scanner zum Einlesen von Nutzereingaben Der Scanner ist ein komplexer Datentyp, der zum Einlesen von Daten über die Tastatur (Kommandozeile) verwendet wird. Er muss aus dem Paket java.util importiert werden:
java Code kopieren import java.util.Scanner;
Scanner meinScanner = new Scanner(System.in); Der Scanner bietet verschiedene Methoden zum Lesen unterschiedlicher Datentypen, wie z.B.:
next(): Liest den nächsten String. nextLine(): Liest die nächste Zeile. nextInt(): Liest den nächsten int. nextDouble(): Liest den nächsten double. Weitere Methoden wie nextBoolean(), nextFloat() und nextLong() ermöglichen das Einlesen weiterer Datentypen. Eine vollständige Liste der Funktionen ist in der offiziellen Java-Dokumentation zu finden.
Wenn der Scanner nicht mehr benötigt wird, sollte er mit close() geschlossen werden, um den belegten Speicherplatz freizugeben.
Beispielaufgaben Addieren von zwei Ganzzahlen: Lesen Sie zwei Ganzzahlen von der Konsole ein, addieren Sie sie und geben Sie das Ergebnis aus:
java Code kopieren Scanner scanner = new Scanner(System.in); System.out.println("Geben Sie die erste Zahl ein:"); int zahl1 = scanner.nextInt(); System.out.println("Geben Sie die zweite Zahl ein:"); int zahl2 = scanner.nextInt();
int summe = zahl1 + zahl2; System.out.println("Die Summe ist: " + summe);
scanner.close(); Problemanalyse - Girokonto-Programm:
Zweck des Programms: Das Programm liest den Namen, den Kontostand und die IBAN eines zukünftigen Kontoinhabers ein und gibt diese Informationen aus. Problem: Nach der Eingabe des Kontostands funktioniert das Einlesen der IBAN nicht korrekt. Ursache: Das Problem entsteht durch das Zusammenspiel von nextInt() und nextLine(). Nach der Eingabe eines int bleibt ein Zeilenumbruch im Puffer, der von nextLine() sofort gelesen wird. Lösung: Fügen Sie nach nextInt() ein zusätzliches nextLine() ein, um den Puffer zu leeren: java Code kopieren kontostandInCent = sc.nextInt(); sc.nextLine(); // Puffer leeren aktuelleIBAN = sc.nextLine(); Diese Anpassung ermöglicht die korrekte Eingabe der IBAN.
// Erstes Element überschreiben (Butter zu Margarine) zutaten[0] = "Margarine"; System.out.println(zutaten[0]); // Ausgabe: Margarine Länge des Arrays abfragen:
java Code kopieren int anzahlElemente = zutaten.length; System.out.print(anzahlElemente); // Ausgabe: 5 Mehrdimensionale Arrays: Mehrdimensionale Arrays speichern Daten auf mehreren Ebenen (z.B. Schichten eines Kuchens).
Beispiel:
java Code kopieren String[][] zutaten = {
{"Butter", "Zucker", "Eier"}, {"Schokolade", "Butter", "Zucker"}, {"Erdbeeren", "Sahne"}
};
// Abrufen des Elements "Schokolade" (1. Schicht, 1. Element) String element = zutaten[1][0]; System.out.println(element); // Ausgabe: Schokolade
// Überschreiben des ersten Elements der dritten Schicht (Erdbeeren zu Kirschen) zutaten[2][0] = "Kirschen"; System.out.println(zutaten[2][0]); // Ausgabe: Kirschen Die Länge des Arrays (Anzahl der Schichten) wird mit zutaten.length abgefragt. Die Länge einer Schicht (z.B. Zutaten einer Schicht) mit zutaten[0].length. In Java können Daten nicht nur temporär im Hauptspeicher gehalten, sondern auch dauerhaft auf der Festplatte gespeichert werden. Dies ist notwendig, um Daten auch nach Beendigung eines Programms verfügbar zu machen. Die Speicherung erfolgt typischerweise in Dateien, wodurch Daten persistent gemacht werden.
Datei erstellen: Um eine Datei auf der Festplatte zu erstellen, verwendet Java den Datentyp File aus dem Paket java.io. Die Methode createNewFile() erzeugt eine neue Datei im Dateisystem.
Beispiel:
java Code kopieren File datei = new File("beispiel.txt"); datei.createNewFile(); Dies erstellt eine Datei namens "beispiel.txt" im Verzeichnis des Programms. Alternativ kann auch ein vollständiger Pfad angegeben werden.
Datei schreiben: Zum Schreiben von Daten in eine Datei wird eine Kombination aus mehreren Klassen verwendet:
FileOutputStream: Schreibt Byte-Daten in eine Datei. OutputStreamWriter: Wandelt Zeichen in Bytes um. BufferedWriter: Puffert die Daten und verbessert die Effizienz beim Schreiben. Beispiel:
java Code kopieren FileOutputStream datei = new FileOutputStream("beispiel.txt"); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(datei));
writer.write("Hallo Welt!"); writer.newLine(); // Neue Zeile hinzufügen writer.write("Ciao."); writer.close(); Hierbei wird ein BufferedWriter verwendet, um Text effizienter in die Datei zu schreiben, da nicht jedes Zeichen einzeln auf die Festplatte geschrieben wird.
Datei lesen: Zum Lesen von Dateien wird eine ähnliche Kombination verwendet:
FileInputStream: Liest Byte-Daten aus einer Datei. InputStreamReader: Wandelt die gelesenen Bytes in Zeichen um. BufferedReader: Puffert die Daten und ermöglicht einfaches Lesen von ganzen Zeilen. Beispiel:
java Code kopieren FileInputStream datei = new FileInputStream("beispiel.txt"); BufferedReader reader = new BufferedReader(new InputStreamReader(datei));
String line = reader.readLine(); while (line != null) {
System.out.println(line); line = reader.readLine(); // Nächste Zeile lesen
} reader.close(); Dieses Programm liest Zeile für Zeile aus der Datei "beispiel.txt" und gibt sie auf der Konsole aus. Die Methode readLine() liefert null, wenn das Ende der Datei erreicht ist.
Zusammenfassung: Dateien bieten eine Möglichkeit, Daten dauerhaft zu speichern. Java verwendet File, um Dateien zu erstellen, und verschiedene Stream-Klassen wie FileOutputStream, OutputStreamWriter, BufferedWriter zum Schreiben bzw. FileInputStream, InputStreamReader, BufferedReader zum Lesen. Pufferung durch BufferedWriter und BufferedReader verbessert die Effizienz, indem Daten gesammelt und in größeren Blöcken verarbeitet werden. Diese Techniken ermöglichen die Arbeit mit persistenten Daten und machen Programme flexibler und nutzbarer, da sie Daten auch nach Beendigung einer Programmsitzung speichern und wieder abrufen können.