38
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörs Einführung in die Programmierung mit Java 12. Vorlesung WS 04/05

Einführung in die Programmierung mit Java

  • Upload
    ludwig

  • View
    35

  • Download
    0

Embed Size (px)

DESCRIPTION

Einführung in die Programmierung mit Java. 12. Vorlesung WS 04/05. Übersicht. Fehlerbehandlung Schreiben in Dateien Lesen aus (Text-)Dateien zeilenweise Lesen von Token ("Parsen"). Laufzeitfehler in Java. - PowerPoint PPT Presentation

Citation preview

Page 1: Einführung in die Programmierung mit Java

Institut für Kartographie und GeoinformationProf.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk DörschlagInstitut für Kartographie und GeoinformationProf.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag

Einführung in dieProgrammierung mit Java

12. Vorlesung WS 04/05

Page 2: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Übersicht

• Fehlerbehandlung

• Schreiben in Dateien

• Lesen aus (Text-)Dateien– zeilenweise– Lesen von Token ("Parsen")

Page 3: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Laufzeitfehler in Java

• Viele Fehler werden vom Compiler aufgedeckt (z.B. fehlendes Semikolon, nicht deklarierte Variable)

• Andere Art von Fehler: Laufzeitfehler – tritt während der Ausführung des Programms auf– unterbricht den normalen Fluss der Befehle (Programm stützt ab)– Name dieser Fehler: Ausnahme (engl. Exception)

• Beispiele für Ausnahmesituationen:– bei Berechnungen Division durch Null– Mangel an Speicherplatz– Zugriff auf Array-Elemente über die Obergrenze hinaus– Schreib-/Lesefehler bei Ein- und Ausgabeoperationen

• Diskette defekt

• Netzwerkverbindung zusammengebrochen

• Festplatte voll

• zu öffnende Datei nicht vorhanden usw.

Page 4: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Fehler während des Ablaufs- Beispiel -

public class Polygon {private Punkt[] eckpunkt;

public Polygon(){super();

}

public void leeres_Polygon( int anzahl_eckpunkte){eckpunkt = new Punkt[ anzahl_eckpunkte];

}

public void punkt_einfuegen( int position, Punkt punkt){eckpunkt[ position] = punkt;

}}

mögliche Fehler

negative Anzahl

Position außerhalb des

Arrays

Array noch nicht angelegt

Page 5: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Laufzeitfehler: Beispiel

................................

int[ ] a;

a = new int[2];

a[0] = 5;

a[1] = 6;

a[2] = 6; //Fehler

Page 6: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Abfangen des Fehlers: try-catch

................................

try{

int[ ] a;

a = new int[2];

a[0] = 5;

a[1] = 6;

a[2] = 6;

}

catch(java.lang.Exception e){

System.out.println("Fehler: Arraygrenze überschritten");

}

Anweisungen, bei denen ein Fehler auftreten kann.

Anweisungen, die ausgeführt werden, sobald ein Fehler

aufgetreten ist

hier geht es in jedem Fall weiter

Page 7: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Ausnahmebehandlung in Java

• Vorteile der Java-Ausnahmebehandlung– Programm stürzt nicht ab– Programm macht an genau definierter Stelle weiter– systematische und übersichtliche Trennung von normalem und

fehlerbehandelndem Code

• Im Falle einer Ausnahme wird ein sog. Exception-Objekt erzeugt und weitergeleitet

– Instanz der Klasse Exception oder von Unterklasse

– Exception-Objekt erhält Information über Ausnahme

– Exception-Objekt wird mit catch gefangen (Fehlerbehandlung)

Page 8: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Exceptions: Klassen-Hierarchie

Throwable(from lang)

Exception(from lang)

ArrayIndexOutOfBoundsException(from lang)

ArithmeticException(from lang)

IOException(from io)

FileNotFoundException(from io)

Page 9: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Exception-Klassen I/II

Exception Der universelle Vater aller Fehlermeldungen. Von dieser Klasse sind alle anderen abgeleitet.

NullPointerException ( extends Exception)Tritt auf, wenn ein Objekt benutzt werden soll, obwohl esnoch nicht angelegt wurde.

Student student;student.drucke_ausweis();

Beispiel :Beispiel :

Page 10: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Exception-Klassen II/II

ArrayIndexOutOfBoundsException ( extends Exception)Tritt auf, wenn auf ein Arrayelement zugegriffen wird, das nicht existiert.

Student student = new Student[2]Student student[3] = new Student(“Dirk“,“Dörschlag“);

Beispiel :Beispiel :

ClassCastException ( extends Exception)Tritt auf, wenn ein Objekt mittels expliziter Typenkonvertierung in eine Typ umgewandelt wird, welcher nicht zu seinen Ahnen gehört

Student student = new Student(“Dirk“,“Dörschlag“); Dozent dozent = (Dozent) student;

Beispiel :Beispiel :

Page 11: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Differenzierte Fehlerbehandlung

• in try-Block können verschiedene Arten von Fehlern auftreten– differenzierte Behandlung sinnvoll

• Lösung: – mehrere catch-Anweisungen, eine für

jeden Fehlertyp– Unterscheidung anhand des Namens des

Fehlers (der Exception)

Page 12: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Fang den Fehler und handle- Differenzierung nach Fehlertyp -

try{anweisung(en);

}catch( Fehlertyp_1 f1){

anweisung(en);}catch( Fehlertyp_2 f2){

anweisung(en);}

Syntax :Syntax : Anweisungen, bei denen ein Fehler auftreten kann.

Anweisungen, die ausgeführt werden,

sobald ein Fehlertyp_2 aufgetreten ist

Anweisungen, die ausgeführt werden,

sobald ein Fehlertyp_1 aufgetreten ist

Page 13: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

public class Polygon {

public void punkt_einfuegen( int position, Punkt punkt){try{

eckpunkt[ position] = punkt;} catch( NullPointerException npe){

System.out.println(“Polygon.punkt_einfuegen()“+ “::Eckpunkte nicht angelegt!“);

}catch( Exception e){

System.out.println(“Polygon.punkt_einfuegen()“+ “::Ein Fehler wurde erkannt!“);

}}

}

Fang den Fehler und handle- try{ anweisung } catch ( fehler ) { warnung } -

Page 14: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Mehrere Catch-Klauseln

• die in der Reihenfolge erste catch-Klausel, die passt, wird verwendet– dann ist try-catch beendet

• Beispiel:

try{eckpunkt[ position] = punkt;

} catch( Exception e){.....}catch( NullPointerException npe){....}; //Zweite catch-Klausel wird nie erreicht

• Daher: Zuerst die speziellere, dann die allgemeinere Exception

Page 15: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Weiterleiten von Exceptions

• Bisher: Fehler in try{...} wurde in catch(..){...} abgefangen und behandelt

• Alternative: Weiterleiten des Fehlers in einer Methode m nach oben an die Methode, die m aufruft– dort muss Fehler mit try-catch behandelt werden oder

wiederum an die aufrufende Methode weitergeleitet werden– die Methode m muss dies durch throws-Klausel kenntlich

machen. Beispiel:public void leeres_Polygon( int anzahl_eckpunkte)

throws Exception{eckpunkt = new Punkt[ anzahl_eckpunkte];

}

Page 16: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Fehlermeldungen weiterleiten- Syntax -

modifier class Klassenname {...

modifier rueckgabetyp methodenname( parameter)throws Fehlertyp_1(, Fehlertyp_2, ...) {

anweisung(en);}...

}

Syntax :Syntax :

die Methode wird an der Stelle abgebrochen, an der der Fehler auftritt !

Page 17: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Fehlermeldungen weiterleiten- Beispiel -

public class Polygon {private Punkt[] eckpunkt;

...

public void leeres_Polygon( int anzahl_eckpunkte)throws Exception{

eckpunkt = new Punkt[ anzahl_eckpunkte];}...

}

Page 18: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Übung im GIS-Labor

• Macht das folgende Programm mittels try {...} catch (Exception e) {...} absturzsicher und gebt bei einem Fehler eine Fehlermeldung aus (Tip: nutzt die Methode printStackTrace() von Exception)

class Ereignis1 { public static void main (String args[]) { int a; int b = 0;

a = 10/b;

System.out.println("Programmende wurde erreicht!"); }}

Page 19: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Schreiben in/Lesen aus Text-Dateien

Mein Programm

MesswerteMesswerte

ErgebnisseErgebnisse

PNR X Y Z

Page 20: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Schreiben in Datei: Beispiel I

import java.io.*;

........

try{

FileWriter fr = new FileWriter("d:\\tmp\\log.txt");

fr.write("Dieser Text steht in der ersten Zeile der ");

fr.write("Datei log.txt.\n");

fr.write("Und dieser in der zweiten.");

fr.close();

}

catch(Exception e){}

Page 21: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Schreiben in Datei

• Öffnen der Datei: Erzeugen einer Instanz der Klasse "FileWriter"– Dateiname als Parameter des Konstruktors

• Scheiben: Aufruf der Methode write(...) für Instanz von FileWriter (Analog zu System.out.println)

• wenn fertig mit schreiben: Aufruf der Methode close() für Instanz von FileWriter

• alles muss in try{ ..} stehen (da fehleranfällig)• Package "java.io" muss importiert werden

Page 22: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Schreiben in Datei: Beispiel II

import java.io.*;

........

try{

//der folgende Konstruktor ermöglicht das Anfügen von

// Text am Ende der Datei (falls diese vorhanden ist)

FileWriter fr = new FileWriter("d:\\tmp\\log.txt",true);

fr.write("....");

fr.close();

}

catch(Exception e){}

Page 23: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Gepuffertes Schreiben

• Datei zum schreiben öffnen:BufferedWriter bw = new BufferedWriter (new FileWriter(“Dateiname“));

• FileWriter ermöglicht das Schreiben von Dateiinhalten.• BufferedWriter puffert das Schreiben. Es wird nur noch in die Datei

geschrieben, wenn die Methode flush() oder close() aufgerufen wird. bessere Performance !

Page 24: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Lesen von Dateien

• allgemein: Lesen von Streams– Stream: Abstraktion der Information, die von Gerät geliefert

bzw. an Gerät geschickt wird

– hier: nur Lesen aus (Text-)Dateien

• Unterschiede hinsichtlich der Menge der Zeichen, die in einem Schritt gelesen werden:– ein Buchstabe: FileReader

– eine Zeichenkette einer bestimmten Länge

– eine Zeile: BufferedReader

– eine Token (Zeichenkette, die von bestimmten Zeichen abgegrenzt werden): StreamTokenizer

Page 25: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

• Datei zum lesen öffnen: FileReader fr = new FileReader(“Dateiname“);

• FileReader ermöglicht das zeichenweise Lesen von Dateiinhalten• unpraktisch für ASCII-Dateien mit Messwerten oder Texten• besser: Erzeugen eines BufferedReader aus FileReader

Zeichenweises Lesen aus Dateien

Page 26: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Zeilenweises Lesen aus Dateien

• Datei öffnen: BufferedReader br = new BufferedReader(new

FileReader(“Dateiname“));• BufferedReader fasst die Zeichen aus dem

FileReader zu Zeichenketten zusammen • Der BufferedReader verfügt u.a. über die Methoden

– readLine(): auslesen der nächsten Zeile (bis zum nächsten Zeilenumbruch) in einen String

– close(): schließen der Datei• Weitere Methoden: JavaDoc

Page 27: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Java und ASCII-Dateien- öffnen und (ein-)lesen -

Beispiel :Beispiel :import java.io.*;

.................................BufferedReader br;String line;int i = 0;try{

br = new BufferedReader(new FileReader("c:\\Koordinaten.txt")); while( (line = br.readLine()) != null){//für jede Zeile wird Konstruktor von von Punkt aufgerufenpunkt[i] = new Punkt( line); i = i+1;

}br.close();

}catch( FileNotFoundException fnfe){

System.out.println(“The file :‘“+ filename +“‘ does not exist“);}catch( IOException ioe){

ioe.printStackTrace();}

Page 28: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Lesen von Token aus Textdatei

Token DelimiterToken Delimiter

Page 29: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Lesen von Token aus Textdatei

• Token: Teil eines Strings (Stream), der von Delimitern begrenzt wird

• Beispiel: – String: "abc de,f 66,z-2"– Delimiter: {" "} //Leerzeichen

• 3 Token: abc de,f 66,z-2

– Delimiter: {" ",","} //Leerzeichen und Komma• 5 Token: abc de f 66 z-2

• Ziel: Extraktion der Token aus String, die bestimmte Bedeutung haben (Parsen)– Abhängig von Menge der Delimiter

Page 30: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Extraktion von Token: Klasse StreamTokenizer

• Standard-Delimiter: Leerzeichen, Zeilenende, Dateiende, ... (können ergänzt werden)

• Methoden von StreamTokenizer:– StreamTokenizer(Reader): Konstruktor

– int nextToken(): schaltet auf nächstes Token um

• Attribute eines Token:– int ttype: Typ des Token

• TT_EOF: Dateiende• TT_EOL: Zeilenende• TT_NUMBER : Zahl• TT_WORD : String

– double nval: Token als double

– String sval: Token als String

Page 31: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Beispiel: Lesen von Token aus Textdatei

import java.io.*;

................

try{

FileReader fr = new FileReader("M:\\Java\\Beispiel.txt");

StreamTokenizer st = new StreamTokenizer(fr);

double d; String s;

while(st.nextToken() != StreamTokenizer.TT_EOF){

switch (st.ttype){

case StreamTokenizer.TT_NUMBER:

d = st.nval; break;

case StreamTokenizer.TT_WORD:

s = st.sval; break;

default: break;}

//hier kann mit d und s etwas gemacht werden

}

fr.close();

}catch(Exception e) { ;}

Page 32: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Extraktion von Token: Klasse StringTokenizer

• ähnlich zu StreamTokenizer• arbeitet auf Strings (z.B. Zeile aus Textdatei)• Konstruktor (zu parsender String und Delimiter):

StringTokenizer st = new StringTokenizer(str,";");• Methoden:

– boolean hasMoreTokens()– String nextToken()

• importieren des Package java.util

Page 33: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

StringTokenizer: Beispiel

try{

StringTokenizer st = new StringTokenizer("ABC;DEF;GH",";");

while(st.hasMoreTokens()){

System.out.println(st.nextToken());

}

}

catch(Exception e) {e.printStackTrace();}

//Ausgabe:

//ABC

//DEF

//GH

Page 34: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Exkurs: Konvertieren von Strings

• Konvertieren von Strings in double: Double.parseDouble. Beispiel:

String s = "4.6566";double d = Double.parseDouble(s);//nun steht in d die Zahl 4.6566

Page 35: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

ENDE

FRAGEN ?

Page 36: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Hausaufgabe

Lest aus der Datei "zahlen.txt" die 6 Zahlen ein und gebt die Summe dieser 6 Zahlen in eine Datei "ergebnis.txt" aus.

Datei "zahlen.txt":7.994.982.772.022.9943.98

Page 37: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Fortgeschrittene Übungsaufgabe (1/2)

Ergänze die Klasse Polygon (Vorlesung 11) um eine Methode, die die Datei "polygon.txt" (nächste Folie) einliest und daraus ein Polygon mit 5 Punkten erzeugt. In einer Zeile dieser Datei steht die Punktnummer, die x-Koordinate und die y-Koordinate eines Punktes.

Teste die Funktionen in einer Klasse Test_Main.

Page 38: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05

Fortgeschrittene Übungsaufgabe (2/2)

Datei polygon.txtDatei polygon.txt

1 2.0 3.02 4.0 3.03 8.0 9.04 7.0 10.05 1.0 6.0