Datum Prüfer

Salzstange

Neues Mitglied
Hallo,
wie der Titel vielleicht schon Verrät, soll ich in JAVA ein Programm schreiben, bei dem man sein Geburtsadtum eingibt, dieses überprüft wird und damit nach Eingabe des aktuellen Datums das Alter berechnet wird.

Code 1:
Bei diesem Code funktioniert das Programm bei richtiger Eingabe einwandfrei.
Nur bei falscher Eingabe NACH dem ersten Buchstaben (index>0) gibt es eine Exception.
Ich denke das es etwas mit der FOR-Schleife zu tun hat, da ja keine Strings einem INTEGER zugewiesen werden können.
Hier nur die Prüfung des richting Syntax und Zuweisung zum neuen Speicher:
Java:
      //Scanner
    Scanner scan = new Scanner(System.in);

    int tag = 0;
    int monat = 0;
    int jahr = 0;
    int tag2 = 0;
    int monat2 = 0;
    int jahr2 = 0;
    int fehlerzahl = 0;
    int fehlerzahl2 = 0;

    //Schleife 1: Prüfung des Geburtsdatums
    do{
      fehlerzahl = 0;
       System.out.println();
       System.out.println("Bitte geben sie ihr Geburtsdatum in folgender");
       System.out.println("Formatierung an: TT.MM.JJJJ");
       String eingabe = scan.next();

      if(eingabe.length()==10){

        for(int i=0;i<10;i++){
           int asc = eingabe.codePointAt(i);

           if((asc<45)||(asc>57)||(asc==47)){
             fehlerzahl++;
           }
           if(fehlerzahl==0){

             tag = Integer.parseInt(eingabe.substring(0,2));
             monat = Integer.parseInt(eingabe.substring(3,5));
             jahr = Integer.parseInt(eingabe.substring(6,10));
           }
           if((tag>31) || (monat>12) || (jahr<1880) || (jahr>2012)){
            fehlerzahl++;
           }

        }
      
      }
      else{
        fehlerzahl++;
      }

    }while(fehlerzahl>0);

Code 2:
Ich komm nicht aus der ersten Schleife heraus.

Java:
    //Schleife 1: Prüfung des Geburtsdatums
    do{
       fehlerzahl = 0;
       System.out.println();
       System.out.println("Bitte geben sie ihr Geburtsdatum in folgender");
       System.out.println("Formatierung an: TT.MM.JJJJ");
       String eingabe = scan.next();

      if(eingabe.length()==10){

        for(int i=0;i<10;i++){
           int asc = eingabe.codePointAt(i);

           if((asc<46)||(asc>57)||(asc==47)){
             fehlerzahl++;
           }

           if((tag>31) || (monat>12) || (jahr<1880) || (jahr>2012)){
            fehlerzahl++;
           }

        }
      }
      else{
        fehlerzahl++;
      }
      if(fehlerzahl==0){

         tag = Integer.parseInt(eingabe.substring(0,2));
         monat = Integer.parseInt(eingabe.substring(3,5));
         jahr = Integer.parseInt(eingabe.substring(6,10));

      }
      System.out.println(fehlerzahl);

    }while(fehlerzahl!=0);

Wie muss ich es richtig schreiben?
 
S

SlaterB

Gast
Java:
           if((tag>31) || (monat>12) || (jahr<1880) || (jahr>2012)){
            fehlerzahl++;
           }
gehört nicht in die Schleife, die jedes Zeichen einzeln prüft,
das ist doch höchstens einmal am Ende interessant,

direkt nach die Schleife auch nicht,
offensichtlich erst wenn die drei Felder auch heraus-gesubstringt wurden

-----

@dayaftereh
sinnvoll bei einer Aufgabe in der man genau das (anscheinend manuell) programmieren soll?..
 

Neue Themen


Oben