E
Ete
Gast
Hallo liebe Java Freunde ich habe leider ein kleines Problem!
Ich habe eine eigene Klasse für Exceptions geschrieben und die funktioniert prechtig.
In der Klasse "TagTest" wird ein String eingelesen, welcher ein Datum representieren soll.
Der String wird in einen primitiven Integerwert konvertiert,
mit dem anschließend der Wochentag berechnet wird.
Ich habe in besagter Klasse nun schon einige Exceptions abgefangen und bearbeitet!
Nun darf der String aber nur Integerwerte und den Punkt als Trennung besitzen.
(Bsp.: 01.11.1900)
Also keine Buchstaben anstatt einer Zahl (Bsp.: 23.A5.2000)!
Wenn ich nun eine try- Anweisung um die konvertierung (bei der Methode parseInt()) setze
und vergleiche ob der String ein Integerwert ist, werden die Variablen TT, MM und JJJJ nur in
der Schleife behandelt und nicht zur Berechnung weitergegeben!
Ich will also eine von java.lang geworfene NumberFormatException als eigene
UngueltigesDatumException behandeln.
Ich hoffe mir kann jemand helfen!!
Hier die Klassen:
UngueltigeDatumException.java:
TagTest.java:
Ich habe eine eigene Klasse für Exceptions geschrieben und die funktioniert prechtig.
In der Klasse "TagTest" wird ein String eingelesen, welcher ein Datum representieren soll.
Der String wird in einen primitiven Integerwert konvertiert,
mit dem anschließend der Wochentag berechnet wird.
Ich habe in besagter Klasse nun schon einige Exceptions abgefangen und bearbeitet!
Nun darf der String aber nur Integerwerte und den Punkt als Trennung besitzen.
(Bsp.: 01.11.1900)
Also keine Buchstaben anstatt einer Zahl (Bsp.: 23.A5.2000)!
Wenn ich nun eine try- Anweisung um die konvertierung (bei der Methode parseInt()) setze
und vergleiche ob der String ein Integerwert ist, werden die Variablen TT, MM und JJJJ nur in
der Schleife behandelt und nicht zur Berechnung weitergegeben!
Ich will also eine von java.lang geworfene NumberFormatException als eigene
UngueltigesDatumException behandeln.
Ich hoffe mir kann jemand helfen!!
Hier die Klassen:
UngueltigeDatumException.java:
Code:
class UngueltigesDatumException extends Exception {
public UngueltigesDatumException() {
}
public UngueltigesDatumException(String e) {
super (e);
}
}
TagTest.java:
Code:
import Prog1Tools.IOTools; //EingabeTool laden
public class TagTest { //Klasse wird erstellt
public static void main(String[] args) { //main- Methode zum ausfuehren starten
String datum;
System.out.println ("Geben Sie bitte ein gueltiges Datum ab dem 1. Januar 1601 ein"); //Eingabe
datum = IOTools.readString ("Bitte geben Sie ein Datum ein:"); //Eingabe eines String als Datum
try {
if ( datum.length() < 9 ) {
throw new UngueltigesDatumException("Das Datum muss das Format TT.MM.JJJJ besitzen!! Also 9 Zeichen!!");
}
}
catch (UngueltigesDatumException i) {
System.out.println("!!Eingabefehler!!");
i.printStackTrace();
System.exit(1);
}
String tt = datum.substring(0, datum.length()-8); //Tag- Teil des Datums wird ermittelt
String mm = datum.substring(3, datum.length()-5); //Monat- Teil des Datums wird ermittelt
String jjjj = datum.substring(6, datum.length()); //Jahr- Teil des Datums wird ermittelt
Integer T = new Integer(tt); //Autoboxing des Strings als Integerobjekt
int TT = Integer.parseInt(tt); //Interpretieren des Integerobjekts als primitiven Datentypen
Integer M = new Integer(mm);
int MM = Integer.parseInt(mm);
Integer J = new Integer(jjjj);
int JJJJ = Integer.parseInt(jjjj);
Tag d = new Tag(TT,MM,JJJJ); //Uebergabe der Parameter an das Objekt der Klasse Tag
String p = ".";
String p1 = datum.substring(2);
String p2 = datum.substring(5);
boolean schaltjahr = (JJJJ%4==0 & JJJJ%100!=0) | JJJJ%400==0;
try {
if( (TT<1) || (TT>31) || (MM<1) || (MM>12) || (JJJJ<1601) ){
throw new UngueltigesDatumException("Es muss ein Datum ab dem 01.01.1601 sein!!");
}
}
catch (UngueltigesDatumException e) {
System.out.println("!!Eingabefehler!!");
e.printStackTrace();
System.exit(1);
}
try {
if( (MM==2 && ((!schaltjahr && TT==29) || (TT==30) || (TT==31))) ){
throw new UngueltigesDatumException("Dieses Jahr ist kein Schaltjahr! Demnach gibt es keinen 29. Februar");
}
}
catch (UngueltigesDatumException f) {
System.out.println("!!Eingabefehler!!");
f.printStackTrace();
System.exit(1);
}
try {
if( (MM==4 && TT==31) || (MM==6 && TT==31) || (MM==9 && TT==31) ||
(MM==11 && TT==31) ){
throw new UngueltigesDatumException("Die Monate April, Juni, September und November haben nur 30 Tage!!");
}
}
catch (UngueltigesDatumException g) {
System.out.println("!!Eingabefehler!!");
g.printStackTrace();
System.exit(1);
}
try {
if( (p1!=p) || (p2!=p) ){
throw new UngueltigesDatumException("Die Trennung muss durch . erfolgen!!");
}
}
catch (UngueltigesDatumException h) {
System.out.println("!!Eingabefehler!!");
h.printStackTrace();
System.exit(1);
}
System.out.println(d.toString());
}
}