Grundstruktur

Werbung
Grundstruktur
/* .... */
//
import java.io.*;
import java.util.*;
import java.sql.*;
Kommentar
Kommentar
Bibliothek Ein/Ausgabe
Datum
SQL
Date in beiden enthalten:
java.util.Date
int = +/- 2 Mrd.
Datentyp
(double) Faktor
Typumwandlung
public class HelloWorld
{
public static void main(String args[])
{
try
{
System.out.println("Hallo Welt");
System.in.read();
}
catch(Exception e)
{
System.out.println("Exception = " + e + "\n");
}
}
}
Name der Klasse
Wie void main()
Zum Fehler abfangen
Anweisungen
Falls Fehler auftritt innerhalb try
Fehler ausgeben
Kontrollstrukturen
while(test<zahler)
{
Bedingungen;
}
0 = falsch,
Bsp. while(test)
>0 = richtig
= solange test wahr ist
while(test)
= Endlosschleife
for(zahler=0;test<zahler;zahler++)
{
Bedingungen;
wird auch im letzten
}
Durchgang erhöht
for(;;)
= Endlosschleife
if(test<zahler)
{
Bedingungen;
}
else
{
Bedingungen;
}
Vergleiche: == && ||
switch(test)
{
case 1: Bedingung;
break;
default: Bed.;
}
(test)
(!test)
= wahr = 1
= falsch = 0
if(test<zahler) Bedingung;
else Bedingung;
break
continue
Auch bei while, for
möglich
= Abbruch
=Am Schleifenanfang weitermachen
Datumsfunktionen
Date d1;
d1 = new Date(1999-1900,9-1,27)
Date = Klasse, d1 = Objekt
bei eingeben = -1 / -1900
bei ausgeben = +1 / +1900
d1.setMonth(1-1)
int Tag = d1.getMonth() +1
if(d1.after(d2))
Daten verändern
Daten bekommen
Daten vergleichen
d1.toGMTString();
d1.toLocaleString();
Daten ausgeben
Daten ausgeben
setDate() = Methode
wenn d1 nach d2 kommt
in Verbindung mit
System.out.println
Tastatureingaben
int Buchstabe = System.in.read();
StreamTokenizer Eingabe = new Stream Tokenizer(System.in);
Eingabe.nextToken();
int Kapital = (int)Eingabe.nval;
nval = double, sval = String
if(eingabe.ttype == StreamTokenizer.TT_NUMBER)
if(eingabe.ttype == StreamTokenizer.TT_WORD) Abfrage ob Wort
Abfrage ob Nummer
Strings
String s1;
s1 = new String("Test");
String s2 = new String(s1);
s1 = "Test";
s1 = s2 + "Test");
oder String s1 = new String();
oder String s1 = "Text";
s1.length();
s1.toUpperCase();
s1.substring(4,7);
s1.charAt(1);
s1.concat(s2);
d1.equals(d1);
Länge bestimmen
Großbuchstaben umwandeln
gibt Buchstaben der Pos. 4 bis 6 zurück (von 0 aus)
gibt 2. Buchstaben zurück
hängt s2 an s1 an
gibt true oder false zurück
if(s1.compareTo(s2) < 0)
if(s1.compareTo("Text") == 0)
wenn s1 kleiner als s2 ist
wenn s1 gleich "Text" ist
Arrays
int a[];
a = new int[5];
a.length
a[0] = 1;
System.out.println(a[0]);
a=b
String Array[] = new String[10]
Array[zahler] = ""
5 Felder groß
gibt 5 zurück
Inhalt a[0] wird ausgegeben
Array a nimmt Daten u. Größe von b an  Werte vorher in for-Schleife zuweisen
am besten in for-Schleife mit "" initialisieren, um evtl. Fehler in
anderen for-Schleifen auszuschließen (Out of Bounce)
Funktionen (Methoden) call by ref
call by value
public static int sortieren(int Umsatz[], String Wort) innerhalb der Klasse
{
vor oder nach void main
return(Ergebnis);
}
Ergebnis = sortieren(Umsatz, Wort);
Konvertierung
String  Int
int Zahl = Integer.valueOf(Wort).intValue();
Konvertierung
Int  String
String Wort = String.valueOf(Zahl);
Aus Datei lesen
FileReader EingabeDatei = new FileReader("artikel.dat");
StreamTokenizer Eingabe = new StreamTokenizer(EingabeDatei);
Eingabe.whitespaceChars(',',',');
Eingabe.nextToken();
while(Eingabe.ttype != StreamTokenizer.TT_EOF)
{
String Enum = Eingabe.sval;
Eingabe.nextToken();
double EVK = Eingabe.nval;
Eingabe.nextToken();
String SQLBef = "Insert into artikel (Num,VK) "
+" values ('"+ENum+"',"+EVK+")";
Befehl.executeUpdate(SQLBef);
}
In Datei schreiben
FileWriter AusgabeDatei = new FileWriter("artikel.dat");
while(Ergebnisse.next())
{
String ENum = Ergebnisse.getString("Num");
String EVK = Ergebnisse.getDouble("Num");
String Azeile = "\""+Enum+"\","+EVK+"\n";
System.out.print (Azeile);
AusgabeDatei.write(Azeile,0,Azeile.length());
}
AusgabeDatei.close();
Sortieren - Aufsteigend
String zwischen;
int zahler1 = 0;
int zahler2 = 0;
int anzahl = 20;
for(zahler1 = 0; zahler1 < anzahl - 1; zahler1 ++)
{
for(zahler2 = zahler1 + 1; zahler2 < anzahl; zahler2 ++)
{
if(Name[zahler1].compareTo(Name[zahler2]) > 0)
{
zwischen = Name[zahler1];
Name[zahler1] = Name[zahler2];
Name[zahler2] = zwischen;
}
}
}
Komma zu Leerzeichen
Maximum
oder sortieren u. letzten Wert nehmen
double Max = 0.0;
if(Wert1 > Wert2) Max = Wert1;
else Max = Wert2;
String max = "";
for(int z = 0; z < 10; z++)
{
if(max.compareTo(Array[z]) < 0) max = Array[z];
}
Minimum
double Min = Wert2;
if(Wert1 < Wert2) Min = Wert1;
else Min = Wert2;
String min = a[0];
for(int z = 0; z < 10; z++)
{
if(min.compareTo(Array[z]) > 0) min = Array[z];
}
Array kann auch sein:
String Array[] = new String[10];
Datum in Datenbank einfügen (mit SQL-Date)
java.sql.Date Datum = new java.sql.Date(99,11,05);
java.sql.Time Zeit = new java.sql.Time(12,35,10);
String SQLBef = "Insert into Lagerort(Regal,Fach,Art,Datum) "
+ "values("+ERegal+","+EFach+",'"+EArt+"',#"+Datum+" "+Zeit+"#)";
Klassen - Statisch
public class Ctest
{
private static int Dlaenge;
//Optional
public Ctest()
{
Dlaenge = 0;
}
public static String holeTest()
{
return("test");
}
 Anzahl kann mit jeder neuen Instanz der
Klasse erhöht werden (Methoden mit ++
vorausgesetzt)
Zugriff möglich mit: Ctest.holeTest()
oder Variable.holeTest()
holeLaenge()  nicht erlaubt, da Klasse nicht initialisiert (static)
}
Klassen - Vererbung
public class Ctest extends COber
{
private int DLaenge;
Methoden aus der Oberklasse können nur auf
Variablen aus der Oberklasse zugreifen
public Ctest()
{
super(0,0);
setzeLaenge(0);
}
Oberklasse kann Methoden der Unterklasse verwenden, wenn
diese Methoden in der Unterklasse überschrieben wurde (also
auch in der Oberklasse enthalten ist)
public void setzeLaenge(pLaenge)
{
DLaenge = pLaenge;
}
}
Klassen - Polymorphismus
COber test[] = new COber[5];
test[0] = new COber();
test[0] = new CTest();
test[z].setzeLaenge  Je nachdem welches Objekt enthalten ist, wird die
Methode der Ober-/Unterklasse verwendet (vorausgesetzt die
Methode wurde in der Unterklasse überschrieben)
Klassen - Abstrakt
public abstract class COber
{
private int DLaenge;
public COber()
{
Dlaenge = 0;
}
public abstract setzeLaenge(pLaenge);
}
- Es können keine Instanzen von Oberklasse erstellt werden
- Methode der Oberklasse muss in Unterklasse überschrieben
werden
Vector
Vector Figuren = new Vector();
Figuren.addElement(aktRechteck);
Figuren.size()
Object Vector erstellen
Rechteck in Liste aufnehmen
Größe Vector
Bei normaler Klasse
Object aktFigur = Figuren.elementAt(z);
if(aktFigur instanceof CRechteck)
CRechteck aktRechteck = (CRechteck) aktFigur;
aktRechteck.zeichne();
Umwandlung von Vector zu Object
prüfen bei Object ein CRechteck ist
Umwandlung von Object zu CRechteck
Zugriff auf Methode von CRechteck
Bei Polymorphismus
CFigur aktFigur = (CFigur)Figuren.elementAt(z);
aktFigur.zeichne();
Umwandlung von Vector zu CFigur
Zugriff auf Methode von CRechteck
Exceptions
public class Ctest
{
private int DLaenge;
public Ctest() throws Exception
{
super(0,0);
setzeLaenge(0);
}
public void setzeLaenge(pLaenge) throws Exception, IllegalArgumentException
{
DLaenge = pLaenge;
Exception enthält alle Fehler
If(Dlaenge < 0)
{
Exception e = new Exception("Fehler");
throw en;
}
}
}
Im Hauptprogramm
try
{ ......
}
catch(IllegalArgumentException e)
{
System.out.println("Fehler" + e);
}
catch(Exception en)
{
System.out.println(en.getMessage());
en = new Exception("Fehler");
}
finally
{
Verbindung.close();
}
gibt komplette Meldung von e aus
Exception immer am Schluß
Gibt nur Textmeldung von en aus (ohne Uhrzeit, etc.)
da Exception schon erstellt, kann man direkt neuen Wert zuweisen
wird immer ausgeführt
Datumskonvertierung
(es können alle Zahlen 1- oder 2-stellig angegeben werden, Datum nur 4-stellig)
String

Datum
String Datum = "31.03.1999";
Bsp. 01.03.1999 / 1.3.1999 / etc.
int Punkt1 = 0;
int Punkt2 = 0;
for(int z = 0; z < Datum.length();z++)
{
if (Datum.charAt(z) == '.' && Punkt2 == 0) Punkt1 = z;
if (Datum.charAt(z) == '.' && Punkt1 != 0) Punkt2 = z;
}
int Tag = Integer.parseInt(Datum.substring(0,Punkt1));
int Monat = Integer.parseInt(Datum.substring(Punkt1+1,Punkt2));
int Jahr = Integer.parseInt(Datum.substring(Punkt2+1,Datum.length()));
Date Datumneu = new Date(Jahr - 1900, Monat - 1, Tag);
String Datum = "01.03.1999 02:03:06";
Bsp. 1.3.1999 02:03:06 / 1.3.1999 2:3:6
int Punkt1 = 0;
int Punkt2 = 0;
int DPunkt1 = 0;
int DPunkt2 = 0;
for(int z = 0; z < Datum.length();z++)
{
if (Datum.charAt(z) == '.' && Punkt2 == 0) Punkt1 = z;
if (Datum.charAt(z) == '.' && Punkt1 != 0) Punkt2 = z;
if (Datum.charAt(z) == ':' && DPunkt2 == 0) DPunkt1 = z;
if (Datum.charAt(z) == ':' && DPunkt1 != 0) DPunkt2 = z;
}
int Tag = Integer.parseInt(Datum.substring(0,Punkt1));
int Monat = Integer.parseInt(Datum.substring(Punkt1+1,Punkt2));
int Jahr = Integer.parseInt(Datum.substring(Punkt2+1,Punkt2+5));
int Std = Integer.parseInt(Datum.substring(Punkt2+6,DPunkt1));
int Min = Integer.parseInt(Datum.substring(DPunkt1+1,DPunkt2));
int Sek = Integer.parseInt(Datum.substring(DPunkt2+1,Datum.length()));
Date Datumneu = new Date(Jahr - 1900, Monat - 1, Tag, Std, Min, Sek);
/ etc.
CGI
void CGI()
{
String Server = getDocumentBase().getHost();
String cgiScript = "GET /cgi-bin/f98/wenz/bspcgi";
Socket sock = new Socket(Server,80);
DataOutputStream Ausgabe = new Data Output Stream(sock.getOutputStream());
StreamTokenizer Eingabe = new StreamTokenizer(sock.getInputStream());
String sAusgabe = txtInhalt.getText();
sAusgabe = sAusgabe.replace(' ','+');
Ausgabe.writeBytes(cgiScript + "?" + sAusgabe + "\n\n");
String Antwort = "";
while (Eingabe.nextToken() != StreamTokenizer.TT_EOF)
{
Antwort = Antwort + Eingabe.sval + " ";
}
txtAntwort.setText(Antwort);
sock.close();
Thread
public class AusThread extends Thread
Tread-Programm
{
private String
private int
DName;
DMSek;
public AusThread(String pName, int pSek)
{
DName = pName;
DMSek = pSek;
}
static synchronized void Ausgabe(String pName, int pSek)
Zur Synchronisation: Zur gleichen Zeit kann
{
nur einer diese Methode ausführen
System.out.println("Ich gebe eine Meldung aus");
try{ Thread.sleep(pSek); }
catch(InterruptedException e) {}
}
public void run()
Wartet pSek lang und wirft dann Fehler
{
while(true)
{ this.Ausgabe(DName,DMSek); }
}
}
public class Haupt extends java.lang.Object
Hauptprogramm
{
public static void main(String args[])
{
try{
AusThread t1 = new AusThread("Task1", 2000);
Erzeugt Tread
t1.start();
Startet Thread-Ausführung
System.out.println("Fertig");
}
catch(Exception e)
{}
}
}
Herunterladen