ffprog:ffprogjava2016:inputoutput

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
ffprog:ffprogjava2016:inputoutput [2016/09/09 09:17]
Ivo Blöchliger created
ffprog:ffprogjava2016:inputoutput [2016/09/11 21:05] (current)
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 20: Line 20:
         // (Viel) mehr Info zu format: https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html         // (Viel) mehr Info zu format: https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html
 </code> </code>
 +
 +Mehr Infos auf https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html
 +
 +=== Eingabe auf der Konsole ===
 +<code java>
 +        // Eingabe. Scanner auf System.in (Konsolen-Eingabe)
 +        Scanner scan = new Scanner(System.in);
 +        System.out.print("Ihr Name bitte: ");
 +        // Nächste Zeile einlsesen
 +        String name = scan.nextLine();
 +        System.out.print("Ihr Alter: ");
 +        // Achtung: Diese Methode produziert Fehler, wenn nicht eine Ganzzahl eingegeben wird.
 +        int alter = scan.nextInt();
 +        System.out.format("%s ist %d Jahre alt.\n", name,alter);
 +</code>
 +
 +==== 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 "ignoriert" werden, indem man die main-Methode wie folgt erweitert:
 +<code java>
 +public static void main(String[] args) throws IOException {
 +   // ....
 +}
 +</code>
 +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;
 +</code>
 +
 +=== Ausgabe in eine Datei ===
 +Ohne absolute Pfadangabe landen die Dateien im aktuellen Projekt-Verzeichnis.
 +<code java>
 +        // Ausgabe in Datei
 +        Path datei = Paths.get("ausgabe.txt");
 +        // Datei öffnen (wird am Ende des try-Blocks automatisch geschlossen)
 +        try (BufferedWriter writer = Files.newBufferedWriter(datei)) {
 +            // Daten schreiben.
 +            writer.write(String.format("%d%n%d%n",a,b));
 +        }
 +        System.out.format("Habe die Zahlen %d und %d in die Datei %s geschrieben.%n", a,b,datei.toRealPath());
 +</code>
 +
 +=== Lesen aus einer Datei ===
 +<code java>
 +        int x;
 +        int y;
 +        Path datei = Paths.get("ausgabe.txt");
 +        // 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("Aus Datei: %d und %d%n", x,y);
 +</code>
 +
 +===== 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
 +</code>
 +Das korrekte Resultat in diesem Fall wäre:
 +<code text>
 +6
 +3
 +</code>
 +Beispieldateien:
 +  * Input: {{ :ffprog:ffprogjava2016:other.txt |other.txt}}. Korrekter Output: {{ :ffprog:ffprogjava2016:other-sol.txt |other-sol.txt}}
 +  * Input: {{ :ffprog:ffprogjava2016:simple.txt |simple.txt}}. Korrekter Output: {{ :ffprog:ffprogjava2016:simple-lsg.txt |simple-lsg.txt}}
 +
 +
  • ffprog/ffprogjava2016/inputoutput.1473405457.txt.gz
  • Last modified: 2016/09/09 09:17
  • by Ivo Blöchliger