ffprog:ffprogjava2016:inputoutput

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
ffprog:ffprogjava2016:inputoutput [2016/09/09 09:42]
Ivo Blöchliger [Input / Output]
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 23: Line 23:
 Mehr Infos auf https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html Mehr Infos auf https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html
  
-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 36: Line 36:
 </code> </code>
  
-=== Textdateien === +==== Textdateien ==== 
-Ausgabe in eine Datei+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> 
 +
 +
 +
 +
 +
 +
 +
 +
 +</code> 
 +Das korrekte Resultat in diesem Fall wäre: 
 +<code text> 
 +
 +
 +</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.1473406947.txt.gz
  • Last modified: 2016/09/09 09:42
  • by Ivo Blöchliger