Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Ein Beispiel in Java.
Einführung in die Programmierung Ausführbare Klassen
10 Streams JavaHS Merseburg WS 05/06 E/A - Ströme (Streams) in Java.
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
SWITCH - Anweisung.
Ein Beispiel in Java.
Exceptions. import java.sql.*; public class MyException{ boolean b; Statement stat; public MyException(){ b = stat.execute("xyz"); } Beim Übersetzen dieses.
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 7. Vorlesung WS 2002/2003.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. D. Dörschlag Einführung in die Programmierung mit Java.
Java-AG Ausnahmebehandlung Gerhard Gröger.
PRJ 2007/1 Stefan Dissmann Motivation Problem: Benutztes Objekt kennt den Kontext seiner Nutzung nicht. Daher kann es in besonderen Situationen keine Entscheidung.
Packages Vortrag : Cornelia Hardt 23. November 1999.
DVG Ausnahmen. DVG Was sind Programmfehler? 4 Programm erzielt gar kein Ergebnis. 4 Berechnetes Ergebnis stimmt nicht mit dem erwarteten.
DVG Ausnahmen1 Ausnahmen. DVG Ausnahmen 2 Was sind Programmfehler? Programm erzielt gar kein Ergebnis. Berechnetes Ergebnis stimmt nicht.
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Grundlagen der Programmierung
Telecooperation/RBG Technische Universität Darmstadt Copyrighted material; for TUD student use only Grundlagen der Informatik I Thema 16: Ausnahmebehandlung.
CuP - Java Eingabe über Tastatur, AudioClips, überschreiben, Quiz Montag, 18. November 2002.
Optimale Ursprungsgerade
Starten der Entwicklungsumgebung (IDE)
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Robuste Programme durch Ausnahmebehandlung
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 8. Vorlesung WS 2002/2003.
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 12. Vorlesung WS 2002/2003.
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Lösung der Hausaufgaben von Vorlesung 10 Universität Bonn Institut für Kartografie und Geoinformation Dipl.-Ing. Dörschlag, Dr. Gröger, Prof. Dr. Plümer.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 12. Vorlesung WS 2001/2002.
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 11. Vorlesung WS 2001/2002.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 13. Vorlesung WS 2002/2003.
Java-Kurs Übung zAusnahmebehandlung: Exceptions zEin-/Ausgabe yDatenströme.
Institut für Kartographie und Geoinformation Prof. Dr. L. Plümer, Dipl.-Ing. D. Dörschlag, Dr. G. Gröger Einführung in die Programmierung mit Java 13.
IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung.
Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003 Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger,
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 7. Vorlesung WS 2002/2003.
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. D. Dörschlag Einführung in die Programmierung mit Java.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
Einführung in die Programmierung mit Java
Abteilung für Telekooperation Softwareentwicklung 2 UE WS 2008/09 SE2UE_ Ausnahmen (Exceptions)
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
OOP mit Java Oder: Java in 5 Tagen. 1. Tag Klassen und Methoden Hello World in Variationen Von Menschen und Geschlechtern Horden (Schlange stehen)
Java Programme nur ein bisschen objektorientiert.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Exceptions in der Programmiersprache Java.
Ein-/ Ausgabe in Java ein Überblick. © eigentlich ganz einfach ? Ein-/Ausgabe durch package java.io Ausgabe (auf Konsole) mit System.out.println()
Einführung in die Programmierung mit Java
Einführung in die Programmierung mit Java
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
 Präsentation transkript:

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

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 Übersicht Fehlerbehandlung Schreiben in Dateien Lesen aus (Text-)Dateien –zeilenweise –Lesen von Token ("Parsen")

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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.

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 Laufzeitfehler: Beispiel int[ ] a; a = new int[2]; a[0] = 5; a[1] = 6; a[2] = 6; //Fehler

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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)

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 Exceptions: Klassen-Hierarchie Throwable (from lang) Exception (from lang) ArrayIndexOutOfBoundsException (from lang) ArithmeticException (from lang) IOException (from io) FileNotFoundException (from io)

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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 es noch nicht angelegt wurde. Student student; student.drucke_ausweis(); Beispiel :

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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 : 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 :

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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)

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 Fang den Fehler und handle - Differenzierung nach Fehlertyp - try{ anweisung(en); } catch( Fehlertyp_1 f1){ anweisung(en); } catch( Fehlertyp_2 f2){ anweisung(en); } 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

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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 } -

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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]; }

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 Fehlermeldungen weiterleiten - Syntax - modifier class Klassenname {... modifier rueckgabetyp methodenname( parameter) throws Fehlertyp_1(, Fehlertyp_2,...) { anweisung(en); }... } Syntax : die Methode wird an der Stelle abgebrochen, an der der Fehler auftritt !

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 Fehlermeldungen weiterleiten - Beispiel - public class Polygon { private Punkt[] eckpunkt;... public void leeres_Polygon( int anzahl_eckpunkte) throws Exception{ eckpunkt = new Punkt[ anzahl_eckpunkte]; }... }

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 Ü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!"); }

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 Schreiben in/Lesen aus Text-Dateien Mein Programm Messwerte Ergebnisse PNRXYZ

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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){}

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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){}

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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 !

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 Java und ASCII-Dateien - öffnen und (ein-)lesen - 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 aufgerufen punkt[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(); }

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 Lesen von Token aus Textdatei Token Delimiter Token Delimiter

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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: abcde,f66,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

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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) { ;}

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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

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

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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":

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 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.

IKG Gröger, Dörschlag, Plümer, „Einführung in die Programmierung mit Java“ WS04/05 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 Fortgeschrittene Übungsaufgabe (2/2) Datei polygon.txt