19
Eingabe und Ausgabe in Java Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien

Eingabe und Ausgabe in Java - wi.wu-wien.ac.atwi.wu-wien.ac.at/studium/Abschnitt_2/LVA_ss03/treiblmaier_Java... · Beispielanalyse 1) Suchen Sie in der Java API die Methode readLine()

Embed Size (px)

Citation preview

Page 1: Eingabe und Ausgabe in Java - wi.wu-wien.ac.atwi.wu-wien.ac.at/studium/Abschnitt_2/LVA_ss03/treiblmaier_Java... · Beispielanalyse 1) Suchen Sie in der Java API die Methode readLine()

Eingabe und Ausgabe in Java

Dr. Horst TreiblmaierAbteilung für Wirtschaftsinformatik

WU Wien

Page 2: Eingabe und Ausgabe in Java - wi.wu-wien.ac.atwi.wu-wien.ac.at/studium/Abschnitt_2/LVA_ss03/treiblmaier_Java... · Beispielanalyse 1) Suchen Sie in der Java API die Methode readLine()

Eingabe Beispiel1public class Input1 {

public static void main(String[] args) {

for (int i = 0; i < args.length; i++) {

System.out.println(args[i]);

}

}

}

Eingabe mit Parameter

Page 3: Eingabe und Ausgabe in Java - wi.wu-wien.ac.atwi.wu-wien.ac.at/studium/Abschnitt_2/LVA_ss03/treiblmaier_Java... · Beispielanalyse 1) Suchen Sie in der Java API die Methode readLine()

Übung

Erstellen Sie eine Klasse Multiplikator die eine beliebige Anzahl von Eingabewerten (ganzzahlig) miteinander multipliziert und das Ergebnis ausgibt.

Hinweis: Verwenden Sie die Methode parseInt() der Klasse Integer um den Datentyp String in den Datentyp intumzuwandeln.

Page 4: Eingabe und Ausgabe in Java - wi.wu-wien.ac.atwi.wu-wien.ac.at/studium/Abschnitt_2/LVA_ss03/treiblmaier_Java... · Beispielanalyse 1) Suchen Sie in der Java API die Methode readLine()

Lösung

public class Multiplikator {

public static void main (String[] args) {

int ergebnis = 1;

for (int i = 0; i < args.length; i++) {

ergebnis = ergebnis * Integer.parseInt(args[i]);

}

System.out.println("Ergebnis: " + ergebnis);

}

}

Page 5: Eingabe und Ausgabe in Java - wi.wu-wien.ac.atwi.wu-wien.ac.at/studium/Abschnitt_2/LVA_ss03/treiblmaier_Java... · Beispielanalyse 1) Suchen Sie in der Java API die Methode readLine()

Hinweis

Nähere Informations zu Streams bzw. Readern undWritern finden Sie im Skriptum zur Java VO.

Zusätzlich ist es sinnvoll die Inhalte in einem der empfohlenen Bücher nachzulesen.

Page 6: Eingabe und Ausgabe in Java - wi.wu-wien.ac.atwi.wu-wien.ac.at/studium/Abschnitt_2/LVA_ss03/treiblmaier_Java... · Beispielanalyse 1) Suchen Sie in der Java API die Methode readLine()

Streams

n Streams stellen den Datenfluss zwischen Sender und Empfänger dar.

n Mit Streams kann gelesen oder geschrieben werden.

Page 7: Eingabe und Ausgabe in Java - wi.wu-wien.ac.atwi.wu-wien.ac.at/studium/Abschnitt_2/LVA_ss03/treiblmaier_Java... · Beispielanalyse 1) Suchen Sie in der Java API die Methode readLine()

Input Stream

n Es gibt zwei Klassen von Inputstreams:n Klassen die angeben von WO gelesen

werden soll (z.B. FileInputStream)n Klassen die angeben WIE gelesen werden

soll (z.B. BufferedInputStream)

Page 8: Eingabe und Ausgabe in Java - wi.wu-wien.ac.atwi.wu-wien.ac.at/studium/Abschnitt_2/LVA_ss03/treiblmaier_Java... · Beispielanalyse 1) Suchen Sie in der Java API die Methode readLine()

Output Stream

n Es gibt zwei Klassen von Outputstreams:n Klassen die angeben WOHIN geschrieben

werden soll (z.B. FileOutputStream)n Klassen die angeben WIE geschrieben

werden soll (z.B. BufferedOutputStream)

Page 9: Eingabe und Ausgabe in Java - wi.wu-wien.ac.atwi.wu-wien.ac.at/studium/Abschnitt_2/LVA_ss03/treiblmaier_Java... · Beispielanalyse 1) Suchen Sie in der Java API die Methode readLine()

Eingabe und Ausgabe

n Für die Verwendung der Eingabe- und Ausgabeklassen muss das Paket java.io.* importiert werden.

n Dort finden Sie Input- und Outputstreams bzw. Reader und Writer.

Page 10: Eingabe und Ausgabe in Java - wi.wu-wien.ac.atwi.wu-wien.ac.at/studium/Abschnitt_2/LVA_ss03/treiblmaier_Java... · Beispielanalyse 1) Suchen Sie in der Java API die Methode readLine()

Ausgabe in eine Dateiimport java.io.*;

public class AusgabeBeispiel1 {

public static void main (String args[]) throws IOException{

int zahl = 40;

File datei = new File ("Test.txt");

FileWriter ausgabestrom = new FileWriter(datei);

PrintWriter ausgabe = new PrintWriter(ausgabestrom);

ausgabe.print("Erste Zeile ");

ausgabe.println("Zweite Zeile");

ausgabe.print("Eine Zahl: " + zahl);

ausgabe.close();

}

}

Page 11: Eingabe und Ausgabe in Java - wi.wu-wien.ac.atwi.wu-wien.ac.at/studium/Abschnitt_2/LVA_ss03/treiblmaier_Java... · Beispielanalyse 1) Suchen Sie in der Java API die Methode readLine()

Beispielanalyse

1) Der Konstruktor der Klasse File erzeugt eine neue Instanz mit dem Namen Test.txt.

2) Der Konstruktor der Klasse FileWriterbenötigt eine Instanz der Klasse File. (hier: datei).

3) Die Klasse PrintWriter ermöglicht eine komfortable Ausgabe (hier mit print() und println() ).

Page 12: Eingabe und Ausgabe in Java - wi.wu-wien.ac.atwi.wu-wien.ac.at/studium/Abschnitt_2/LVA_ss03/treiblmaier_Java... · Beispielanalyse 1) Suchen Sie in der Java API die Methode readLine()

Eingabe

import java.io.*;

class Input1 {

public static void main (String args[]) {

try {

System.out.println("Geben Sie eine Zeichenkette ein: ");

BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));

String eingabewert = eingabe.readLine();

System.out.println("Eingabe: " + eingabewert);

}

catch (IOException e) {

}

}

}

Page 13: Eingabe und Ausgabe in Java - wi.wu-wien.ac.atwi.wu-wien.ac.at/studium/Abschnitt_2/LVA_ss03/treiblmaier_Java... · Beispielanalyse 1) Suchen Sie in der Java API die Methode readLine()

Beispielanalyse

1) Suchen Sie in der Java API die Methode readLine() der Klasse Buffered Reader. Warum benötigen wir einen try-catch block? Kennen Sie ein andere Möglichkeit um die Ausnahme zu behandeln?

2) System.in ist die Standardeingabe von der Tastatur

3) Die Klasse InputStreamReader liest Bytes und decodiert diese in einen bestimmten Zeichensatz.

4) Die Klasse BufferedReader buffert die eingelesenen Bytes.

Page 14: Eingabe und Ausgabe in Java - wi.wu-wien.ac.atwi.wu-wien.ac.at/studium/Abschnitt_2/LVA_ss03/treiblmaier_Java... · Beispielanalyse 1) Suchen Sie in der Java API die Methode readLine()

Aufgabe Mitarbeiter 1

Schreiben Sie eine Klasse Mitarbeiter, welche die Variablen name(String) und alter (int) besitzt. Zusätzlich verfügt diese Klasse über einen Konstruktor der Namen und Alter zuweist und 2 Methoden getName() und getAlter(), welche die jeweiligen Variablen zurückgeben.

In einer Klasse Mitarbeiterverwaltung fragen Sie den Nutzer zunächst wieviele Mitarbeiter angelegt werden sollen. Danach lesen Sie in einer Schleife Namen und Alter des jeweiligen Mitarbeiters aus und weisen diese einer Instanz zu.

Abschließend geben Sie alle Mitarbeiter inkl. deren Alter aus.

Hinweis: Betrachten Sie den Screenshot auf der nächsten Folie

Page 15: Eingabe und Ausgabe in Java - wi.wu-wien.ac.atwi.wu-wien.ac.at/studium/Abschnitt_2/LVA_ss03/treiblmaier_Java... · Beispielanalyse 1) Suchen Sie in der Java API die Methode readLine()

Aufgabe Mitarbeiter 2

Page 16: Eingabe und Ausgabe in Java - wi.wu-wien.ac.atwi.wu-wien.ac.at/studium/Abschnitt_2/LVA_ss03/treiblmaier_Java... · Beispielanalyse 1) Suchen Sie in der Java API die Methode readLine()

Lösung Mitarbeiter 1class Mitarbeiter {

String name;

int alter;

Mitarbeiter(String name, int alter) {

this.name = name;

this.alter = alter;

}

String getName() {

return name;

}

int getAlter() {

return alter;

}

}

Page 17: Eingabe und Ausgabe in Java - wi.wu-wien.ac.atwi.wu-wien.ac.at/studium/Abschnitt_2/LVA_ss03/treiblmaier_Java... · Beispielanalyse 1) Suchen Sie in der Java API die Methode readLine()

Lösung Mitarbeiter 2aimport java.io.*;

class Mitarbeiterverwaltung {

public static void main(String[] args) throws IOException{

System.out.println("Wieviele Mitarbeiter wollen Sie anlegen?");

BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));

String eingabewert = eingabe.readLine();

int zaehler = Integer.parseInt(eingabewert);

//Anlegen neuer Mitarbeiter

Mitarbeiter[] meineMitarbeiter = new Mitarbeiter[zaehler];

String name;

int alter;

Page 18: Eingabe und Ausgabe in Java - wi.wu-wien.ac.atwi.wu-wien.ac.at/studium/Abschnitt_2/LVA_ss03/treiblmaier_Java... · Beispielanalyse 1) Suchen Sie in der Java API die Methode readLine()

Lösung Mitarbeiter 2bfor (int i = 0; i<meineMitarbeiter.length; i++) {

System.out.println("Name von Mitarbeiter Nr. " + (i+1));

eingabewert = eingabe.readLine();

name = eingabewert;

System.out.println("Alter von Mitarbeiter Nr. " + (i+1));

eingabewert = eingabe.readLine();

alter = Integer.parseInt(eingabewert);

meineMitarbeiter[i] = new Mitarbeiter(name, alter);

}

//Ausgabe aller Mitarbeiter

for (int i = 0; i< meineMitarbeiter.length; i++) {

System.out.println("*************");

System.out.println("Name von Mitarbeiter Nr. " + (i+1) + ": " + meineMitarbeiter[i].getName());

System.out.println("Alter von Mitarbeiter Nr. " + (i+1) + ": " +meineMitarbeiter[i].getAlter());

}

}

}

Page 19: Eingabe und Ausgabe in Java - wi.wu-wien.ac.atwi.wu-wien.ac.at/studium/Abschnitt_2/LVA_ss03/treiblmaier_Java... · Beispielanalyse 1) Suchen Sie in der Java API die Methode readLine()

Eingabe/Ausgabe in eine Dateiimport java.io.*;

public class Kopierer {

public static void main(String args[]) {

int wert;

try {

FileInputStream eingabestrom = new FileInputStream("Original.txt");

FileOutputStream ausgabestrom = new FileOutputStream("Kopie.txt");

while ((wert = eingabestrom.read()) != -1) {

ausgabestrom.write(wert);

}

ausgabestrom.flush();

ausgabestrom.close();

}

catch (Exception e) {

}

}

}