Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
ffprog:ffprogjava2016:inputoutput [2016/09/09 09:24] Ivo Blöchliger [Input / Output] |
ffprog:ffprogjava2016:inputoutput [2016/09/11 21:05] Ivo Blöchliger [SOI - Aufgaben] |
||
---|---|---|---|
Line 1: | Line 1: | ||
{{backlinks> | {{backlinks> | ||
- | ==== Input / Output ==== | + | ===== Input / Output |
- | === Konsole === | + | ==== Konsole |
- | Output auf die Konsole: | + | === Output auf die Konsole |
<code java> | <code java> | ||
int a = 24; | int a = 24; | ||
Line 23: | Line 23: | ||
Mehr Infos auf https:// | Mehr Infos auf https:// | ||
- | Eingabe auf der Konsole: | + | === Eingabe auf der Konsole |
<code java> | <code java> | ||
// Eingabe. Scanner auf System.in (Konsolen-Eingabe) | // Eingabe. Scanner auf System.in (Konsolen-Eingabe) | ||
Line 35: | Line 35: | ||
System.out.format(" | System.out.format(" | ||
</ | </ | ||
+ | |||
+ | ==== Textdateien ==== | ||
+ | Hinweis: Operationen mit Dateien können Fehler verursachen (z.B. weil die Datei nicht (mehr) existiert). Diese Fehler können entweder abgefangen werden (mit try / catch) oder " | ||
+ | <code java> | ||
+ | public static void main(String[] args) throws IOException { | ||
+ | // .... | ||
+ | } | ||
+ | </ | ||
+ | Für die Manipulation von Datei sind einige Imports nötig. Netbeans schlägt diese Imports vor, manuelles Eingeben bzw. Abschreiben ist nicht nötig: | ||
+ | <code java> | ||
+ | import java.io.BufferedWriter; | ||
+ | import java.io.IOException; | ||
+ | import java.nio.file.Files; | ||
+ | import java.nio.file.Path; | ||
+ | import java.nio.file.Paths; | ||
+ | import java.util.Scanner; | ||
+ | </ | ||
+ | |||
+ | === Ausgabe in eine Datei === | ||
+ | Ohne absolute Pfadangabe landen die Dateien im aktuellen Projekt-Verzeichnis. | ||
+ | <code java> | ||
+ | // Ausgabe in Datei | ||
+ | Path datei = Paths.get(" | ||
+ | // Datei öffnen (wird am Ende des try-Blocks automatisch geschlossen) | ||
+ | try (BufferedWriter writer = Files.newBufferedWriter(datei)) { | ||
+ | // Daten schreiben. | ||
+ | writer.write(String.format(" | ||
+ | } | ||
+ | System.out.format(" | ||
+ | </ | ||
+ | |||
+ | === Lesen aus einer Datei === | ||
+ | <code java> | ||
+ | int x; | ||
+ | int y; | ||
+ | Path datei = Paths.get(" | ||
+ | // Datei öffnen und in einen Scanner einbinden | ||
+ | // Scanner und Datei werden am Ende vom try-Block automatisch geschlossen. | ||
+ | try (Scanner scanner = new Scanner(Files.newInputStream(datei))) { | ||
+ | x = scanner.nextInt(); | ||
+ | y = scanner.nextInt(); | ||
+ | } | ||
+ | System.out.format(" | ||
+ | </ | ||
+ | |||
+ | ===== Aufgaben ===== | ||
+ | ==== Addition ==== | ||
+ | Gegeben ist eine Text-Datei mit einer positiven natürlichen Zahl pro Zeile. | ||
+ | Die erste Zahl gibt an, wie viele Serien in der Datei gespeichert sind. | ||
+ | Für jede Serie gibt die erste Zahl an, wie viele Zahlen gespeichert sind. | ||
+ | |||
+ | Die Ausgabe (auf die Konsole) ist ebenfalls eine Zahl pro Zeile, die der Summe aller Zahlen einer Serie entspricht. | ||
+ | Beispiel: (2 Serien, die erste mit 3 Zahlen (1,2,3), die zweite mit 2 Zahlen (1,2)): | ||
+ | <code text> | ||
+ | 2 | ||
+ | 3 | ||
+ | 1 | ||
+ | 2 | ||
+ | 3 | ||
+ | 2 | ||
+ | 1 | ||
+ | 2 | ||
+ | </ | ||
+ | Das korrekte Resultat in diesem Fall wäre: | ||
+ | <code text> | ||
+ | 6 | ||
+ | 3 | ||
+ | </ | ||
+ | Beispieldateien: | ||
+ | * Input: {{ : | ||
+ | * Input: {{ : | ||
+ | |||
+ |