Einführung in die Programmierung mit Java

Post on 18-Jan-2016

25 views 1 download

description

Einführung in die Programmierung mit Java. 10. Vorlesung WS-03/04. Formatieren des Quellcodes. Regeln: Klassennamen fangen mit GROßEN Buchstaben an. Attributs-, Variablen- und Methodenname fangen mit kleinen Buchstaben an. - PowerPoint PPT Presentation

Transcript of 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

10. Vorlesung WS-03/04

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

Formatieren des Quellcodes

Regeln:Regeln:

1. Klassennamen fangen mit GROßEN Buchstaben an.2. Attributs-, Variablen- und Methodenname fangen mit

kleinen Buchstaben an.3. Nach jedem Semikolon ; (außer in for-Schleifen) und

nach jeder geschweiften Klammer auf { und zu } folgt ein Zeilenumbruch !

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

Formatieren des Quellcodes- und warum ?? -

1. Bessere Lesbarkeit2. Einfacheres Finden von Fehlern !

class Punkt {public double x,y,z;public Punkt(double x, double y, double z){this.x=x;this.y=y;this.z=z;}public distanz_zu(Punkt anderer){double delta_x=this.x-anderer.x,double delta_y=this.y-anderer.y;return(Math.sqrt(delta_x*delta_x+delta_y*delta_y));}

}

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

Formatieren des Quellcodes- und warum ?? -

1. Bessere Lesbarkeit2. Einfacheres Finden von Fehlern !

class Punkt {public double x,y,z;public Punkt(double x, double y, double z){

this.x = x;this.y = y;this.z = z;

}public distanz_zu(Punkt anderer){

double delta_x = this.x-anderer.x,double delta_y = this.y-anderer.y;return(Math.sqrt(delta_x*delta_x+delta_y*delta_y));

}}

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

Formatieren des Quellcodes- und warum ?? -

1. Bessere Lesbarkeit2. Einfacheres Finden von Fehlern !3. Die Fehlermeldungen des Compilers sind ZEILEN

spezifisch

class Punkt {public double x,y,z;public Punkt(double x, double y, double z){this.x=x;this.y=y;this.z=z;}public distanz_zu(Punkt anderer){double delta_x=this.x-anderer.x,double delta_y=this.y-anderer.y;return(Math.sqrt(delta_x*delta_x+delta_y*delta_y));}

}

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

Formatieren des Quellcodes- und warum ?? -

1. Bessere Lesbarkeit2. Einfacheres Finden von Fehlern !3. Die Fehlermeldungen des Compilers sind ZEILEN

spezifisch

class Punkt {public double x,y,z;

...

public distanz_zu(Punkt anderer){double delta_x=this.x-anderer.x,double delta_y=this.y-anderer.y;return(Math.sqrt(delta_x*delta_x+delta_y*delta_y));

}}

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

Fehlertypen- z.B. NullPointerException, ClassCastException -

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 :

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

Fehlertypen- z.B. NullPointerException, ClassCastException -

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 :

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

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

try{anweisung(en);

}catch( Fehlertyp e){

anweisung(en);}

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

Anweisungen, die ausgeführt werden, sobald ein Fehler

aufgetreten ist

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

public class Polygon {private Punkt[] eckpunkt;

...

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

eckpunkt[ position] = punkt;}catch( Exception e){

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

}}...

}

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

Fehlertyp =irgend ein Fehler

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

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

}catch( NullPointerException npe){

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

}}

}

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

DieReihenfolge

istwichtig !

immer erst den spezielleren Fehler fangen !

da spezieller !

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

Fehlermeldungen weiterwerfen- throws Fehlertyp -

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 !

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

Fehlermeldungen weiterwerfen- throws fehler -

public class Polygon {private Punkt[] eckpunkt;

...

public void leeres_Polygon( int anzahl_eckpunkte)throws Exception{

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

}

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

Selbst Fehler werfen- throw( fehler); -

Syntax :Syntax :

throw new Fehlertyp(Parameter_des_Konstruktors);

mit Aufruf einer throw-Anweisung wird die Methode an dieser Stelle abgebrochen !

Eine Methode, in der eine throw-Anweisung enthalten ist, muss diese Fehler weiterwerfen (throws) oder behandeln (try{}catch(){}) !

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

Selbst Fehler werfen- throw( fehler); -

public class Polygon {private Punkt[] eckpunkt;...

public void leeres_Polygon( int anzahl_eckpunkte)throws Exception{

if( anzahl_eckpunkte < 1){throw( new Exception(

“Polygon.leeres_Polygon(#)::“+“zu wenig Eckpunkte“));

}eckpunkt = new Punkt[ anzahl_eckpunkte];

}...

}

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

Java und ASCII-Dateien

Mein Programm

MesswerteMesswerte

ErgebnisseErgebnisse

PNR X Y Z

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

Datei zum lesen öffnen

Syntax :Syntax :FileReader fr = new FileReader(“Dateiname“);

FileReader ermöglicht das zeichenweise lesen von Dateiinhalten.

unpraktisch für ASCII-Dateien mit Messwerten oder Texten

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

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

Besser :

Syntax :Syntax : BufferedReader br = new BufferedReader(new FileReader(“Dateiname“));

BufferedReader fasst die Zeichen aus dem FileReader zu Zeichenketten zusammen und puffert die Leseoperationen.

Der BufferedReader verfügt u.a. über die Methoden:br.readLine() :: auslesen der nächsten Zeile (bis zum nächsten

Zeilenumbruch) in einen Stringbr.close() :: schließen der Datei

alle Methoden und der Konstruktor werfen Fehler vom Typ IOException im Falle eines Fehlers. Weitere Methoden können der JavaDoc entnommen werden.

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

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

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

Beispiel :Beispiel :import java.io.*;

class Polygon(){private Punkt[] punkt;...public void load(String filename){

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

br = new BufferedReader(new FileReader( filename)); while( (line = br.readLine()) != null){

punkt[i++] = new Punkt( line);}br.close();

}catch( FileNotFoundException fnfe){

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

ioe.printStackTrace();}}}

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

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

Beispiel :Beispiel :import java.io.*;

class Polygon(){private Punkt[] punkt;...public void load(String filename)throws IOException{

BufferedReader br = new BufferedReader( new FileReader( filename));String line;int i = 0;

while( (line = br.readLine()) != null){punkt[i++] = new Punkt( line);

}br.close();

}}

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

Exkurs- Strings in Double-Werte wandeln -

Beispiel :Beispiel :import java.io.*;

class Distanz_Tabelle(){private double[] distanz;...public void load(String filename)throws IOException{

BufferedReader br = new BufferedReader( new FileReader( filename));String line;int i = 0;

while( (line = br.readLine()) != null){distanz[i++] = Double.parseDouble( line);

}br.close();

}}

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

Exkurs- Strings zerlegen -

Beispiel :Beispiel :

String line = “10.0;20.0;30.0;“;String line = “10.0;20.0;30.0;“;String[] parts = String[] parts = newnew String[3]; String[3];

intint first = 0, last, i = 0; first = 0, last, i = 0;

whilewhile(((last = line.indexOf(“;“, first)) != -1(last = line.indexOf(“;“, first)) != -1){){parts[i] = line.substring( first, last);parts[i] = line.substring( first, last);i++;i++;first = last + 1;first = last + 1;

}}

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

Exkurs- Strings zerlegen -

Beispiel :Beispiel :

String line = “10.0;20.0;30.0;“;String line = “10.0;20.0;30.0;“;String[] parts = String[] parts = newnew String[3]; String[3];

intint first = 0, last, i = 0; first = 0, last, i = 0;

whilewhile(((last = line.indexOf(“;“, first)) != -1(last = line.indexOf(“;“, first)) != -1){){parts[i] = line.substring( first, last);parts[i] = line.substring( first, last);i++;i++;first = last + 1;first = last + 1;

}}

DEBUGGING ...

line line = “10.0;20.0;30.0;“= “10.0;20.0;30.0;“parts[0] parts[0] = null= nullparts[1] parts[1] = null= nullparts[2] parts[2] = null= nulllast last = 4= 4first first = 0= 0i i = 0= 0

line line = “10.0;20.0;30.0;“= “10.0;20.0;30.0;“parts[0] parts[0] = null= nullparts[1] parts[1] = null= nullparts[2] parts[2] = null= nulllast last = 4= 4first first = 0= 0i i = 0= 0

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

Exkurs- Strings zerlegen -

Beispiel :Beispiel :

String line = “10.0;20.0;30.0;“;String line = “10.0;20.0;30.0;“;String[] parts = String[] parts = newnew String[3]; String[3];

intint first = 0, last, i = 0; first = 0, last, i = 0;

whilewhile(((last = line.indexOf(“;“, first)) != -1(last = line.indexOf(“;“, first)) != -1){){parts[i] = line.substring( first, last);parts[i] = line.substring( first, last);i++; i++; first = last + 1;first = last + 1;

}}

DEBUGGING ...

line line = “10.0;20.0;30.0;“= “10.0;20.0;30.0;“parts[0] parts[0] = “10.0“= “10.0“parts[1] parts[1] = null= nullparts[2] parts[2] = null= nulllast last = 4= 4first first = 0= 0i i = 0= 0

line line = “10.0;20.0;30.0;“= “10.0;20.0;30.0;“parts[0] parts[0] = “10.0“= “10.0“parts[1] parts[1] = null= nullparts[2] parts[2] = null= nulllast last = 4= 4first first = 0= 0i i = 0= 0

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

Exkurs- Strings zerlegen -

Beispiel :Beispiel :

String line = “10.0;20.0;30.0;“;String line = “10.0;20.0;30.0;“;String[] parts = String[] parts = newnew String[3]; String[3];

intint first = 0, last, i = 0; first = 0, last, i = 0;

whilewhile(((last = line.indexOf(“;“, first)) != -1(last = line.indexOf(“;“, first)) != -1){){parts[i] = line.substring( first, last);parts[i] = line.substring( first, last);i++; i++; first = last + 1;first = last + 1;

}}

DEBUGGING ...

line line = “10.0;20.0;30.0;“= “10.0;20.0;30.0;“parts[0] parts[0] = “10.0“= “10.0“parts[1] parts[1] = null= nullparts[2] parts[2] = null= nulllast last = 4= 4first first = 0= 0i i = 1= 1

line line = “10.0;20.0;30.0;“= “10.0;20.0;30.0;“parts[0] parts[0] = “10.0“= “10.0“parts[1] parts[1] = null= nullparts[2] parts[2] = null= nulllast last = 4= 4first first = 0= 0i i = 1= 1

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

Exkurs- Strings zerlegen -

Beispiel :Beispiel :

String line = “10.0;20.0;30.0;“;String line = “10.0;20.0;30.0;“;String[] parts = String[] parts = newnew String[3]; String[3];

intint first = 0, last, i = 0; first = 0, last, i = 0;

whilewhile(((last = line.indexOf(“;“, first)) != -1(last = line.indexOf(“;“, first)) != -1){){parts[i] = line.substring( first, last);parts[i] = line.substring( first, last);i++; i++; first = last + 1;first = last + 1;

}}

DEBUGGING ...

line line = “10.0;20.0;30.0;“= “10.0;20.0;30.0;“parts[0] parts[0] = “10.0“= “10.0“parts[1] parts[1] = null= nullparts[2] parts[2] = null= nulllast last = 4= 4first first = 5= 5i i = 1= 1

line line = “10.0;20.0;30.0;“= “10.0;20.0;30.0;“parts[0] parts[0] = “10.0“= “10.0“parts[1] parts[1] = null= nullparts[2] parts[2] = null= nulllast last = 4= 4first first = 5= 5i i = 1= 1

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

Exkurs- Strings zerlegen -

Beispiel :Beispiel :

String line = “10.0;20.0;30.0;“;String line = “10.0;20.0;30.0;“;String[] parts = String[] parts = newnew String[3]; String[3];

intint first = 0, last, i = 0; first = 0, last, i = 0;

whilewhile(((last = line.indexOf(“;“, first)) != -1(last = line.indexOf(“;“, first)) != -1){){parts[i] = line.substring( first, last);parts[i] = line.substring( first, last);i++; i++; first = last + 1;first = last + 1;

}}

DEBUGGING ...

line line = “10.0;20.0;30.0;“= “10.0;20.0;30.0;“parts[0] parts[0] = “10.0“= “10.0“parts[1] parts[1] = null= nullparts[2] parts[2] = null= nulllast last = 9= 9first first = 5= 5i i = 1= 1

line line = “10.0;20.0;30.0;“= “10.0;20.0;30.0;“parts[0] parts[0] = “10.0“= “10.0“parts[1] parts[1] = null= nullparts[2] parts[2] = null= nulllast last = 9= 9first first = 5= 5i i = 1= 1und so weiter ...

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

Java und ASCII-Dateien- öffnen und schreiben -

Datei zum Schreiben öffnen

Syntax :Syntax :FileWriter fr = new FileWriter(“Dateiname“);

FileWriter ermöglicht das Schreiben von Dateiinhalten.

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

Java und ASCII-Dateien- öffnen und schreiben -

Datei zum schreiben öffnen

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

Java und ASCII-Dateien- öffnen und schreiben -

Datei zum schreiben öffnen

Syntax :Syntax :PrintWriter pw = new PrintWriter(

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.

• PrintWriter ermöglicht die Ausgabe aller primitiven Datentypen als Strings.

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

Java und ASCII-Dateien- öffnen und schreiben -

Beispiel :Beispiel :class Polygon{

private Punkt[] punkt;...public void write(String filename)throws IOException{

PrintWriter pw = new PrintWriter( new BufferedWriter(

new FileWriter( filename)));for( int i = 0; i < punkt.length; i++){

pw.write( punkt[i].gibID());pw.write( “;“);pw.write( punkt[i]. gibX());pw.write( “;“);pw.write( punkt[i]. gibY());pw.writeln( “;“);

}pw.close();

}}

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

ENDE

NOCH FRAGEN ???

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

Übungsaufgabe

Schreibt eine Klasse Punkt mit den Attributen pnr, x und y, die die Methoden distanz_zu( Punkt other) und ausgabe() haben soll. Fange in der Methode distanz_zu(Punkt other) NullPointerExceptions ab.

Schreibt eine Klasse Polygon, die unter Verwendung eines Arrays Punkte [punkt_hinzu(Punkt punkt)] aufnehmen und mittels der Methode umfang() ihren aktuellen Umfang berechen kann und zudem eine Methode ausgabe() besitzt. Eventuell mögliche Exceptions sind zu fangen !

Teste die Funktionen in einer Klasse Test_Main.

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

Hausaufgabe(1/2)

Ergänze die Klasse Punkt aus der Übung um den Konstruktor Punkt( String line), wobei gilt: line=“pnr;x-wert;y-wert;“.(siehe auch eine Zeile der polygon.txt !!)

Ergänze die Klasse Polygon aus der Übung um eine Methode lade(String dateiname) zum Einlesen eines Polygons aus einer Datei und um eine Methode datei_ausgabe(String dateiname) zum Ausgeben der Punktnummern der Punkte im Polygon, sowie des Polygonumfangs in eine Datei.

Teste die Funktionen in einer Klasse Test_Main.

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

Hausaufgabe(1/2)

polygon.txtpolygon.txt

1;2.0;3.0;2;4.0;3.0;3;8.0;9.0;4;7.0;10.0;5;1.0;6.0;