Eingabe und Ausgabe in Java

Werbung
Eingabe und Ausgabe in Java
Dr. Horst Treiblmaier
Abteilung für Wirtschaftsinformatik
WU Wien
Eingabe Beispiel1
public class Input1 {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
}
Eingabe mit Parameter
Ü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 int
umzuwandeln.
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);
}
}
Hinweis
Nähere Informations zu Streams bzw. Readern und
Writern finden Sie im Skriptum zur Java VO.
Zusätzlich ist es sinnvoll die Inhalte in einem der
empfohlenen Bücher nachzulesen.
Streams
n
n
Streams stellen den Datenfluss
zwischen Sender und Empfänger dar.
Mit Streams kann gelesen oder
geschrieben werden.
Input Stream
n
Es gibt zwei Klassen von Inputstreams:
n
n
Klassen die angeben von WO gelesen
werden soll (z.B. FileInputStream)
Klassen die angeben WIE gelesen werden
soll (z.B. BufferedInputStream)
Output Stream
n
Es gibt zwei Klassen von
Outputstreams:
n
n
Klassen die angeben WOHIN geschrieben
werden soll (z.B. FileOutputStream)
Klassen die angeben WIE geschrieben
werden soll (z.B. BufferedOutputStream)
Eingabe und Ausgabe
n
n
Für die Verwendung der Eingabe- und
Ausgabeklassen muss das Paket
java.io.* importiert werden.
Dort finden Sie Input- und
Outputstreams bzw. Reader und Writer.
Ausgabe in eine Datei
import 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();
}
}
Beispielanalyse
1) Der Konstruktor der Klasse File erzeugt
eine neue Instanz mit dem Namen
Test.txt.
2) Der Konstruktor der Klasse FileWriter
benötigt eine Instanz der Klasse File. (hier:
datei).
3) Die Klasse PrintWriter ermöglicht eine
komfortable Ausgabe (hier mit print() und
println() ).
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) {
}
}
}
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.
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
Aufgabe Mitarbeiter 2
Lösung Mitarbeiter 1
class Mitarbeiter {
String name;
int alter;
Mitarbeiter(String name, int alter) {
this.name = name;
this.alter = alter;
}
String getName() {
return name;
}
int getAlter() {
return alter;
}
}
Lösung Mitarbeiter 2a
import 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;
Lösung Mitarbeiter 2b
for (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());
}
}
}
Eingabe/Ausgabe in eine Datei
import 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) {
}
}
}
Herunterladen