ffprog:ffprogjava2016:inputoutput

This is an old revision of the document!


Output auf die Konsole

        int a = 24;
        int b = 5;
        System.out.println(a); // Ausgabe mit Zeilenumbruch
        // String zusammensetzen. Anfung muss String sein!
        System.out.print("b = "+b);  // Ohne Zeilenumbruch.
        System.out.println(" und a = "+a);
        // Bequemer als Strings zusammensetzen
        System.out.format("a=%d, b=%d,  a/b=%d   (double)a/b=%f\n", a,b,a/b,(double)a/b);
        // Mehr Kontrolle über die Formatierung
        System.out.format("%5d\n*%4d\n-----\n%05d\n=====\n",a,b,a*b);
        // Double formatieren.
        double c = 1.125;
        System.out.format("->%.2f<-\n->%4.2f<-\n->%010.5f<-\n->%.5f<-\n", c,c,c,c);
 
        // (Viel) mehr Info zu format: 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. 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);

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:

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:

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.

        // 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());

Lesen aus einer Datei

        int x;
        int y;
        // 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);
  • ffprog/ffprogjava2016/inputoutput.1473411547.txt.gz
  • Last modified: 2016/09/09 10:59
  • by Ivo Blöchliger