Eingabe und Ausgabe in Java -...

Preview:

Citation preview

Eingabe und Ausgabe in Java

Dr. Horst TreiblmaierAbteilung für Wirtschaftsinformatik

WU Wien

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

Ü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.

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 undWritern finden Sie im Skriptum zur Java VO.

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

Streams

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

n Mit Streams kann gelesen oder geschrieben werden.

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)

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)

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.

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

}

}

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() ).

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 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;

}

}

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;

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

}

}

}

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) {

}

}

}

Recommended