Geburtsdatum einlesen

T

Timer123

Gast
Hallo Leute, mein Programm soll mir mein Geburtsdatum ausgeben
Allerdings sollen verschiedene Fehlermeldungen geworfen werden, sobald ein unrealistisches Datum eingetippt wird.

Meine Frage, warum schlägt die "IsFutureTimeException" nicht an wenn ich z.B. eingebe:

Geburtsjahr: 2100... das datum liegt doch in der Zukunft

Wenn ich aber eingebe: Geburtsjahr 2010

und Monat: 7

dann wirft er einen Exception..also dann funktioniert es

Kann mir einer bitte sagen wo der Fehler liegt? Glaube irgendwo in der Klasse "Year" aber keine Ahnung wo :((

Hier meine Klassen:


Main

Java:
package edu.hm.cs.swe2.exceptions;

import edu.hm.cs.swe2.exceptions.datecomponents.*;
import java.util.*;

public class Main {

	public static void main(String[] args) throws Exception { 
		
		
		// Objekte Year, Month, Day werden referenziert
		Year year = new Year();
		Month month = new Month();
		Day day = new Day ();
		
		// boolische Variable um aus der drauffolgenden Schleife rauszuspringen
		boolean isValid = true;
		
		// Implementierung des im Computer vorhandenen Kalendars 
		Calendar rightNow = Calendar.getInstance();
		
		
		// Ausgabe von Year, Month und Day, falls die Eingabe gültig ist
		do {
			year.requestBirthYear(rightNow);
			month.requestBirthMonth(rightNow, year.getYear());
			day.requestBirthDay(rightNow, year.getYear(), month.getMonth());
			
			isValid = Day.validateDay(day.getDay(),month.getMonth(), year.getYear());
			
		} while (!isValid);
		
		// Ausgabe in geordneter Reihenfolge 
		System.out.println("Du hast am " + day + "." + month + "." + year + " Geburtstag");
	}
}

Year:

Java:
package edu.hm.cs.swe2.exceptions.datecomponents;

import java.io.*;
import java.util.*;
import edu.hm.cs.swe2.exceptions.exceptionclasses.IllegalMonthException;
import edu.hm.cs.swe2.exceptions.exceptionclasses.IsFutureDateException;


public class Year {

	// Klassenattribut
	private int year;

	// Costum- und Default-Konstruktor
	public Year(int year) {
		this.year = year;
	}

	public Year() {

	}

	// Methode, welche für die Eingabe einer Jahreszahl, welche
	// anschließend auf Richtigkeit überprüft wird, benötigt wird

	public void requestBirthYear(Calendar rightNow)
			throws NumberFormatException, IllegalMonthException,
			IsFutureDateException {
		int i = 0;

		while (true) {
			try {
				BufferedReader input = new BufferedReader(
						new InputStreamReader(System.in));
				System.out.println("Bitte gib dein Geburtsjahr ein:");
				i = Integer.parseInt(input.readLine());

				if (year > rightNow.get(Calendar.YEAR)) {
					throw new IsFutureDateException(
							"Eingegebenes Jahr liegt in der Zukunft, kann nicht dein Geburtsjahr sein!");
				}

				year = i;
				break;
			} catch (IsFutureDateException e) {
				e.printStackTrace(System.out);
			} catch (NumberFormatException e) {
				System.out.println("Ouch, das war keine Zahl!!!");
				e.printStackTrace(System.out);
			} catch (IOException e) {
				e.printStackTrace(System.out);
			}

		}
	}

	// Überschriebene toString-Methode mit der Jahresausgabe
	@Override
	public String toString() {
		return String.valueOf(year);
	}

	// Getter/Setter Methoden
	public void setYear(int year) {
		this.year = year;
	}

	public int getYear() {
		return year;
	}

}

Month:

Java:
package edu.hm.cs.swe2.exceptions.datecomponents;

import java.io.*;
import java.util.*;

import edu.hm.cs.swe2.exceptions.exceptionclasses.IllegalMonthException;
import edu.hm.cs.swe2.exceptions.exceptionclasses.IsFutureDateException;


public class Month {

	// Klassenattribut
	private int month;

	// Costum- und Default-Konstruktor
	public Month(int month) {
		this.month = month;
	}

	public Month() {

	}

	// Methode, welche für die Eingabe eines Monats, welche
	// anschließend auf Richtigkeit überprüft wird, benötigt wird
	public void requestBirthMonth(Calendar rightNow, int birthYear)
			throws NumberFormatException, IllegalMonthException,
			IsFutureDateException {

		int i = 0;

		while (i < 1 || i > 12) {
			try {
				BufferedReader input = new BufferedReader(
						new InputStreamReader(System.in));
				System.out.println("Bitte gib dein Geburtsmonat ein:");
				i = Integer.parseInt(input.readLine());

				if (i < 1 || i > 12)
					throw new IllegalMonthException(
							"Wert für Monat muss zwischen 1 und 12 liegen.");
				month = i;

				if (birthYear == rightNow.get(Calendar.YEAR)) {
					if (month > rightNow.get(Calendar.MONTH))
						throw new IsFutureDateException(
								"Eingegebenes Jahr liegt in der Zukunft, kann nicht dein Geburtsjahr sein!");
				}

			} catch (IllegalMonthException e) {
				e.printStackTrace(System.out);
			} catch (IsFutureDateException e) {
				e.printStackTrace(System.out);
			} catch (NumberFormatException e) {
				System.out.println("Ouch, das war keine Zahl!!!");
				e.printStackTrace(System.out);
			} catch (IOException e) {
				e.printStackTrace(System.out);
			}
		}
	}

	// Überschriebene toString-Methode mit der Monatsausgabe
	@Override
	public String toString() {
		return String.valueOf(month);
	}

	// Getter/Setter - Methoden
	public void setMonth(int month) {
		this.month = month;
	}

	public int getMonth() {
		return month;
	}

Day:

Java:
package edu.hm.cs.swe2.exceptions.datecomponents;

import java.io.*;
import java.util.Calendar;

import edu.hm.cs.swe2.exceptions.exceptionclasses.IllegalDayException;
import edu.hm.cs.swe2.exceptions.exceptionclasses.IsFutureDateException;

public class Day {

	// Klassenattribut
	private int day;

	
	// Costum- und Default-Konstruktor 
	public Day(int day) {
		this.day = day;
	}

	public Day() {

	}
	
	
	// Methode, welche für die Eingabe eines Tages, welche
	// anschließend auf Richtigkeit überprüft wird, benötigt wird
	public void requestBirthDay(Calendar rightNow, int birthYear, int birthMonth) throws NumberFormatException,
		IllegalDayException, IsFutureDateException {

		int i = 0;

		while (i < 1 || i > 31){
			try {
				BufferedReader input = new BufferedReader(
						new InputStreamReader(System.in));
				System.out.println("Bitte gib dein Geburtstag ein:");
				i = Integer.parseInt(input.readLine());
				
				if (i < 1 || i > 31)
					throw new IllegalDayException(
							"Wert für Monat muss zwischen 1 und 31 liegen.");
				day = i ;
				
				
				if (birthYear == rightNow.get(Calendar.YEAR) && birthMonth == rightNow.get(Calendar.MONTH))
				{
					if (day > rightNow.get(Calendar.DAY_OF_MONTH))
					{
						throw new IsFutureDateException("Eingegebenes Jahr liegt in der Zukunft, kann nicht dein Geburtsjahr sein!");
					}
				}
				
				
				//if jahr und monat gleich
				// if tag > aktueller tag
				

			} catch (NumberFormatException e) {
				System.out.println("Ouch, das war keine Zahl!!!");
				e.printStackTrace(System.out);
			} catch (IOException e) {
				e.printStackTrace(System.out);
			} catch (IllegalDayException e) {
				  e.printStackTrace(System.out);
			} catch (IsFutureDateException e)
			{
				e.printStackTrace(System.out);
			}
		}
	}
	
	// Überschriebene toString-Methode mit der Tagesausgabe
	@Override
	public String toString() {
		return String.valueOf(day);
	}
	
	// statische Methode, die einen Wahrheitswertzurücklieft;
	// sie wird benötigt, um den Monaten unterschiedlich lange Tage zuzuweisen,
	// sowie Schaltjahre und die Tage des Februars (28,29) zu berücksichtigen
	public static boolean validateDay(int birthDay, int birthMonth,	int birthYear) throws IllegalDayException {
		boolean isValid = true;
		int daysInMonth = 0;

		switch (birthMonth) {
		case 1:
			daysInMonth = 31;
			break;
		case 2:
			if (birthYear % 4 == 0) {
				daysInMonth = 29;
			} else {
				daysInMonth = 28;
			}
			break;
		case 3:
			daysInMonth = 31;
			break;
		case 4:
			daysInMonth = 30;
			break;
		case 5:
			daysInMonth = 31;
			break;
		case 6:
			daysInMonth = 30;
			break;
		case 7:
			daysInMonth = 31;
			break;
		case 8:
			daysInMonth = 31;
			break;
		case 9:
			daysInMonth = 30;
			break;
		case 10:
			daysInMonth = 31;
			break;
		case 11:
			daysInMonth = 30;
			break;
		case 12:
			daysInMonth = 31;
			break;
		}

		if (birthDay > daysInMonth)
		{
			isValid = false;
		}
		

		
		return isValid;

	}

	// Getter/Setter - Methoden
	public void setDay(int day) {
		this.day = day;
	}

	public int getDay() {
		return day;
	}

}

Ausnahmeklassen:

Java:
package edu.hm.cs.swe2.exceptions.exceptionclasses;


public class IllegalMonthException extends Exception {

	
	// Default-Konstruktor 
	public IllegalMonthException()
	{
				
	}
	
	// Konstruktor der Ausnahmeklasse mit einem Stringparameter
	public IllegalMonthException(String message)
	{
		super(message);	
	}  

	
	
}

Java:
package edu.hm.cs.swe2.exceptions.exceptionclasses;


public class IllegalDayException extends Exception {

	// Default-Konstruktor 
	public IllegalDayException()
	{
				
	}
	
	// Konstruktor der Ausnahmeklasse mit einem Stringparameter
	public IllegalDayException(String message)
	{
		super(message);	
	}  

}

Java:
package edu.hm.cs.swe2.exceptions.exceptionclasses;


public class IsFutureDateException extends Exception {

	// Default-Konstruktor 
	public IsFutureDateException()
	{
				
	}
	
	// Konstruktor der Ausnahmeklasse mit einem Stringparameter
	public IsFutureDateException(String message)
	{
		super(message);	
	}  

	
	
}


Hoffe einer von euch findet da was

mfg
 
Zuletzt bearbeitet von einem Moderator:

nrg

Top Contributor
Java:
                i = Integer.parseInt(input.readLine());
 
                if (year > rightNow.get(Calendar.YEAR)) {
                    throw new IsFutureDateException(
                            "Eingegebenes Jahr liegt in der Zukunft, kann nicht dein Geburtsjahr sein!");
                }
 
                year = i;

year ist zum zeitpunkt der prüfung noch 0
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Array, Geburtsdatum, Vergleichen Java Basics - Anfänger-Themen 28
K Mit Scanner aus einer txt Datei lesen und jede Person mit name, vorname, geburtsdatum speichern Java Basics - Anfänger-Themen 5
L verschachteltes ArrayList nach Geburtsdatum sortieren Java Basics - Anfänger-Themen 4
O Variable Zimmergrößen per scanner einlesen Java Basics - Anfänger-Themen 5
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
G JTree speichern und wieder einlesen Java Basics - Anfänger-Themen 5
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
S SeriellenPort einlesen Java Basics - Anfänger-Themen 3
I XML einlesen und Objekte bekommen Java Basics - Anfänger-Themen 2
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
julian0507 Wörter einlesen lassen und rückwärts ausgeben Java Basics - Anfänger-Themen 7
S JSON einlesen und benutzen Java Basics - Anfänger-Themen 5
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
I Ical4j / Kalender einlesen von URL - Fehler: "Unparseable date" Java Basics - Anfänger-Themen 16
Saiko Zeilen einer Datei einlesen Java Basics - Anfänger-Themen 3
sserio Txt Datei einlesen Java Basics - Anfänger-Themen 9
D Strings aus Excel-Datei einlesen Java Basics - Anfänger-Themen 2
julian112 Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions Java Basics - Anfänger-Themen 1
M String beim einlesen formatieren Java Basics - Anfänger-Themen 12
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
G JSP Textfeld einlesen Java Basics - Anfänger-Themen 2
M Einlesen > new Leser Java Basics - Anfänger-Themen 5
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10
A Array einlesen und ausgeben Java Basics - Anfänger-Themen 13
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
S Wort einlesen Array ausgeben Java Basics - Anfänger-Themen 4
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
A Input/Output Mehrere Csv-Dateien einlesen Java Basics - Anfänger-Themen 2
S CSV einlesen und mit Komma trennen Java Basics - Anfänger-Themen 12
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
I Java-Wort einlesen und ausgeben Java Basics - Anfänger-Themen 7
J Csv-Datei einlesen Java Basics - Anfänger-Themen 52
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
L Datein einlesen Java Basics - Anfänger-Themen 1
O zufälliges Wort aus einer Datei einlesen Java Basics - Anfänger-Themen 32
E Input/Output Datei anhand von Dateinamen einlesen Java Basics - Anfänger-Themen 5
C Datei über relative Pfade einlesen Java Basics - Anfänger-Themen 6
A Input/Output Dateien einlesen und ausgeben Java Basics - Anfänger-Themen 7
A Klasse um daten zu einlesen Java Basics - Anfänger-Themen 26
A 2d Arrays aus txt.file einlesen Java Basics - Anfänger-Themen 16
A Textdatei mit stream einlesen Java Basics - Anfänger-Themen 2
P Datei einlesen und zurückgeben Java Basics - Anfänger-Themen 5
G String wird nach Einlesen aus Datei nicht erkannt Java Basics - Anfänger-Themen 3
M String in Scanner einlesen Java Basics - Anfänger-Themen 6
E TXT FILE EINLESEN Java Basics - Anfänger-Themen 4
M Einzelzeichen einlesen Java Basics - Anfänger-Themen 2
C (char) Array einlesen Java Basics - Anfänger-Themen 8
B HTML File einlesen inkl. Bilder? Java Basics - Anfänger-Themen 2
E Mehrere Eingabezeilen gleichzeitig einlesen Java Basics - Anfänger-Themen 7
B HTML Datei einlesen und HTML Code in String wandeln Java Basics - Anfänger-Themen 19
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11
P Text Datei einlesen und übertragen Java Basics - Anfänger-Themen 15
E Einteilung der Räume mit einlesen einer .txt datei Java Basics - Anfänger-Themen 16
P Array einlesen von Konsole Java Basics - Anfänger-Themen 8
D Eingaben in String Array einlesen Java Basics - Anfänger-Themen 12
B CSV einlesen - Parameter a) encoding b) delimiter Java Basics - Anfänger-Themen 7
R Compiler-Fehler Einlesen von Konsolenparameter funtioniert nichtmehr Java Basics - Anfänger-Themen 4
I OOP Objektnamen über die Konsole richtig einlesen Java Basics - Anfänger-Themen 9
J Einlesen von Datei funktioniert nicht Java Basics - Anfänger-Themen 8
H Einlesen Java Basics - Anfänger-Themen 8
H Einlesen von Zahlen Java Basics - Anfänger-Themen 20
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
CptK Datentypen Text Dateien einlesen Java Basics - Anfänger-Themen 3
A Datentypen Unterschiedliche Datentypen in einer Eingabe einlesen Java Basics - Anfänger-Themen 2
R txt Einlesen und Verarbeiten Java Basics - Anfänger-Themen 15
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
M Datei einlesen mit Scanner funktioniert nicht (FileNotFoundException) Java Basics - Anfänger-Themen 6
K Sonderzeichen einlesen Java Basics - Anfänger-Themen 3
L Input/Output XML Datei einlesen (JAXB?) Java Basics - Anfänger-Themen 10
F Zahlen aus Datei einlesen und in Array speichern Java Basics - Anfänger-Themen 2
I Datei einlesen Java Basics - Anfänger-Themen 11
J Best Practice [Code Verbesserung] TXT einlesen und in Arrayliste speichern Java Basics - Anfänger-Themen 5
A Ungeordnetes Array ordnen, Zahl einlesen und einordnen Java Basics - Anfänger-Themen 23
R Erste Schritte Sicheres einlesen eines Strings Java Basics - Anfänger-Themen 2
MaximilianTM Input/Output Einlesen und bearbeiten einer text Datei / Zeile Java Basics - Anfänger-Themen 5
C Erste Schritte Regex - Datei einlesen und splitten Java Basics - Anfänger-Themen 4
T Input/Output Einlesen eines .txt Files nur bei gesetztem Breakpoint möglich Java Basics - Anfänger-Themen 1
L RSA Public Key einlesen Java Basics - Anfänger-Themen 0
K Datei aus unbekannten Speicherorten einlesen Java Basics - Anfänger-Themen 1
T Datei in Array einlesen "null" Java Basics - Anfänger-Themen 8
U Daten aus Datei einlesen Java Basics - Anfänger-Themen 4
J Auslesen/speichern und wieder einlesen Java Basics - Anfänger-Themen 7
N Datei Zeilenweise einlesen, Ausgabe mehrere Arrays Java Basics - Anfänger-Themen 7
B Excel File einlesen und Überschrift prüfen Java Basics - Anfänger-Themen 8
M Einlesen von Integerwertern aus einer CSV Java Basics - Anfänger-Themen 8
? Methoden Boolean Wert vergleichen und einlesen Java Basics - Anfänger-Themen 1
K String einlesen und als Variable speichern Java Basics - Anfänger-Themen 8
K .txt einlesen und in ein Array packen Java Basics - Anfänger-Themen 2
M Erste Schritte Zahlen einlesen und auswerten Java Basics - Anfänger-Themen 6
N Best Practice CSV einlesen - Variables Array?! Java Basics - Anfänger-Themen 8
O Klassen Objektnamen für Methodenaufrauf einlesen lassen Java Basics - Anfänger-Themen 2
D Array Werte einlesen und ausgeben? Java Basics - Anfänger-Themen 8
C Java Scanner einlesen von txt Dokument InputMismatch Java Basics - Anfänger-Themen 9
V Hilfe zum Thema einlesen eines Datums Java Basics - Anfänger-Themen 5
E Erste Schritte txt.Datei mit BufferedReader einlesen und in 2D-Array abspeichern Java Basics - Anfänger-Themen 15
S Werte in Array einlesen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen


Oben