Plausibles Datum

astradslme

Mitglied
Hallo Leute,
ich soll ein Datum auf plausibilität prüfen.

Sprich ist das eingegebene Datum richtig,verfügbar,macht es einen Sinn.

Darauf muss geachtet werden:

Ob die Monate 31 oder 30 Tage haben.
Ob der Februar 29 Tage oder 28 Tage hat.

hier ist mein angefangener Code allerdings komm ich mit dem Verknüpfen etc. nicht voran, ich denke die Bedingungen Stimmen soweit nur das "verknüpfen" miteinander klappt nicht :-( . Bitte versuch mir so einfach wie möglich zu helfen, da es mit einfachen If Selektionen umgesetzt werden muss.

Vielen Dank schonmal!

Java:
package CodeAblage;
import java.io.*;
public class Plausibel {

	
	public static void main(String[] args) throws IOException {
		
		int jahr = 0, monat = 0, tag = 0, maxTage = 0;
		
		BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
		
		System.out.println("Bitte geben Sie Jahr das ein!");
		
                jahr = Integer.parseInt(br.readLine());
		if (jahr>=0 && jahr<=9999)
		{
				System.out.println("Das Jahr ist OK.");
		}
		
		System.out.println("Bitte geben Sie den Monat ein!");
		monat = Integer.parseInt(br.readLine());
		if (monat >=1 && monat <=12)
		{
				System.out.println("Der Monat ist OK.");
		}
		
		
		
		System.out.println("Bitte geben Sie den Tag ein!");
		tag = Integer.parseInt(br.readLine());
		
		if (tag>=1 && tag<=maxTage)
		{
			System.out.println("Der Tag ist OK.");
		}
		
		
		if (monat == 1 && monat == 5 && monat == 7 && monat == 8 && monat == 10 && monat == 12)
		{
			maxTage=31;
		}
			
			else 
			{
				if (monat == 4 && monat == 6 && monat == 9 && monat == 11)
					maxTage=30;
			}
				
		
				
		
	
		
			
		
				
		//Wohin damit?
		
		if (monat == 1 && monat == 5 && monat == 7 && monat == 8 && monat == 10 && monat == 12)
			maxTage=31;
		
		if (monat == 4 && monat == 6 && monat == 9 && monat == 11)
			maxTage=30;
		
		if (monat == 2 && ((jahr%4) == 0) && (!((jahr%100) == 0) || jahr%400 == 0))
			maxTage=29;
		
		if (monat == 2 && !((jahr%4) == 0) && (!((jahr%100) == 0) || jahr%400 == 0))
			maxTage=28;
			
									
		}
					
	}
 

Clayn

Aktives Mitglied
Und du solltest die Tage erst einlesen wenn du die Monatsbestimmung mit den maxtagen gemacht hast. Denn immoment muss die Tageszahl größer 1 und kleiner maxtage sein, was in dem Moment noch 0 ist
 
H

hüteüberhüte

Gast
Ein int kann nicht gleichzeitig zwei Werte haben (|| verwenden)

Berechnung von maxTage nach der Eingabe von tag und vor der Prüfung

Java:
if (.. || .. || ..) {

} else if (.. || .. || ..) {

.. } else {

}
verwenden

PS: Wann ist ein Schaltjahr ein Schaltjahr??? :)
 

astradslme

Mitglied
Hi Leute ich habe das ganze nun hinbekommen nur eine FRAGE:

Wenn alle "if" Bedingunen true sind, also nicht ins "else" welchseln möchte ich eine Ausgabe haben, das DATUM IST OK, sobald eine false ist soll ausgegeben werden das DAS DATUM IST NICHT OK!

Danke schonmal ihr habt schon sehr geholfen!!

Hier mein CODE:

Java:
package zelle;
import  java.io.*;

public class Prüfe {
	
	int jahr = 0, monat = 0, tag = 0, maxTage = 0;
	
	public void werteEinlesen  () throws IOException
		
	{
		BufferedReader EINGABE = new BufferedReader(new InputStreamReader (System.in));
		
		System.out.println("Bitte geben Sie das Jahr ein:");
		jahr = Integer.parseInt(EINGABE.readLine());
		
		System.out.println("Bitte geben Sie den Monat ein:");
		monat = Integer.parseInt(EINGABE.readLine());
		
		System.out.println("Bitte geben Sie den Tag ein:");
		tag = Integer.parseInt(EINGABE.readLine());
		
		
	}

	public void werteVerarbeitenPrüfen (){
		
		
		
		
		if (jahr >=1 && jahr<=9999)
			{
			System.out.println("Das Jahr ist OK!");
			}
				else 
					{
					System.out.println("Das Jahr ist NICHT OK!");
					}
		
		if (monat>=1 && monat<=12)
			{
			System.out.println("Der Monat ist OK!");
			}
				else
					{
					System.out.println("Der Monat ist NICHT OK!");
					}
		if (monat == 1 || monat ==3 || monat == 5 || monat == 7 || monat == 8 || monat == 10 || monat == 12)
			{
			maxTage=31;			
			}
		if (monat == 4 || monat == 6 || monat == 9 || monat == 11)
			{
			maxTage=30;
			}
		//HIER WIRDS KOMISCH
		
		if (monat == 2 && (jahr%4==0 && (jahr%100!=0 || jahr%400==0)))
				{
			maxTage = 29;	
			System.out.println("Das Jahr ist ein Schaltjahr!");
				}
				
				
		if (monat == 2 && !(jahr%4==0 && (jahr%100!=0 || jahr%400==0)))
				{
				maxTage = 28;
				System.out.println("Wir haben kein Schaltjahr");
				}
				
		
		if (tag>=1 && tag<=maxTage)
			{
			System.out.println("Der Tag ist OK!");
			}
				else
					{
					System.out.println("Der Tag ist NICHT OK!");
					}
 

Templarthelast

Bekanntes Mitglied
Java:
public void werteVerarbeitenPrüfen (){

private boolean plausibel = true;

// Datumprüfung wenn irgendetwas nicht ok --> plausibel = false

if(plausibel){
// OK
} else {
// nicht ok
}
}
Dabei nimmst du Standartmäßig an, dasss du ein plausibles Datum hast und erst wenn eine Prüfung fehl schlägt, weißt du dass es nicht stimmt.

Zusätzlich solltest du deine Prüfungen noch verschachteln. wie z.B.:

Java:
//prüfe Tag
//wenn Tag ok dann prüfte Monat
// sonst ENDE

Das Sternchen bei einer solchen Funktion wäre natürlich, wenn sie halbwegs erkennen würde, wenn die richtigen Daten in einer anderen Form angegeben werden (dd/mm/yyyy = mm/dd/yyy)
 
Zuletzt bearbeitet:
H

hüteüberhüte

Gast
Java:
        if (monat == 1 || monat ==3 || monat == 5 || monat == 7 || monat == 8 || monat == 10 || monat == 12)
            {
            maxTage=31;         
            }
        if (monat == 4 || monat == 6 || monat == 9 || monat == 11)
            {
            maxTage=30;
            }
        //HIER WIRDS KOMISCH
        
        if (monat == 2 && (jahr%4==0 && (jahr%100!=0 || jahr%400==0)))
                {
            maxTage = 29;   
            System.out.println("Das Jahr ist ein Schaltjahr!");
                }
                
                
        if (monat == 2 && !(jahr%4==0 && (jahr%100!=0 || jahr%400==0)))
                {
                maxTage = 28;
                System.out.println("Wir haben kein Schaltjahr");
                }

->

Java:
        if (monat == 1 || monat ==3 || monat == 5 || monat == 7 || monat == 8 || monat == 10 || monat == 12)
            {
            maxTage=31;         
            }
        else if (monat == 4 || monat == 6 || monat == 9 || monat == 11)
            {
            maxTage=30;
            }
        //HIER WIRDS KOMISCH
        
        else if ( ahr%4==0 && (jahr%100!=0 || jahr%400==0) )
                {
            maxTage = 29;   
            System.out.println("Das Jahr ist ein Schaltjahr!");
                }
                
                
        else
                {
                maxTage = 28;
                System.out.println("Wir haben kein Schaltjahr");
                }

Sobald einmal false, musst du eine Variable (ein Flag) auch auf flase setzen
 

astradslme

Mitglied
ich habs mit 3 verschiedenen strings gelöst,

also:

Java:
if (stringI == "OK" && stringII == "OK" && stringIII == "OK")
System.out.println("Das Datum ist plausibel");

else System.out.println("Das Datum ist nicht plausibel");

.
.
.

Und halt StringI, StringII, StringIII oben zum jeweiligen if hinzugefügt

hab ich das nun falsch oder unprofessionell gelöst? weil es funktioniert! :-D
 

jgh

Top Contributor
zumindest falsch, da man Strings mit [c]equals(String anotherString)[/c] vergleicht...über Professionalität will ich lieber nicht urteilen ;)
 

astradslme

Mitglied
Aktueller Code, welcher funktioniert:

Java:
package zelle;
import  java.io.*;

public class Prüfe {
	
	int jahr = 0, monat = 0, tag = 0, maxTage = 0;
	String prüfeJahr, prüfeMonat, prüfeTag;
	
	
	public void werteEinlesen  () throws IOException
		
	{
		BufferedReader EINGABE = new BufferedReader(new InputStreamReader (System.in));
		
		System.out.println("STARTE Überprüfung des Datums\n");
		
		System.out.println("Bitte geben Sie das Jahr ein:");
		jahr = Integer.parseInt(EINGABE.readLine());
		
		System.out.println("Bitte geben Sie den Monat ein:");
		monat = Integer.parseInt(EINGABE.readLine());
		
		System.out.println("Bitte geben Sie den Tag ein:");
		tag = Integer.parseInt(EINGABE.readLine());
		
		
	}

	public void werteVerarbeitenPrüfen (){
		
		boolean plausibel = true;
		
		if (plausibel)
		{
			
		
		
		
		if (jahr >=1 && jahr<=9999)
			{
			System.out.println("Das Jahr ist OK!");
			prüfeJahr = "peniz";
			}
				else 
					{
					System.out.println("Das Jahr ist NICHT OK!");
					}
		
		if (monat>=1 && monat<=12)
			{
			System.out.println("Der Monat ist OK!");
			prüfeMonat = "peniz";
			}
				else
					{
					System.out.println("Der Monat ist NICHT OK!");
					}
		if (monat == 1 || monat ==3 || monat == 5 || monat == 7 || monat == 8 || monat == 10 || monat == 12)
			{
			maxTage=31;			
			}
		if (monat == 4 || monat == 6 || monat == 9 || monat == 11)
			{
			maxTage=30;
			}
		//HIER WIRDS KOMISCH
		
		if (monat == 2 && (jahr%4==0 && (jahr%100!=0 || jahr%400==0)))
				{
			maxTage = 29;	
			System.out.println("Das Jahr ist ein Schaltjahr!");
				}
				
				
		if (monat == 2 && !(jahr%4==0 && (jahr%100!=0 || jahr%400==0)))
				{
				maxTage = 28;
				System.out.println("Wir haben kein Schaltjahr");
				}
				
		
		if (tag>=1 && tag<=maxTage)
			{
			System.out.println("Der Tag ist OK!");
			prüfeTag = "peniz";
			}
				else
					{
					System.out.println("Der Tag ist NICHT OK!");
					}
		
		}
		else
		{
			System.out.println("Das Datum ist NICHT plausibel");
		}
	}
	
	
	
	
	
	
	
	public void plausibelAusgabe ()
	
	{
		//if (prüfeJahr.equals("peniz") & prüfeMonat.equals("peniz") & prüfeTag.equals("peniz") )
			
		if (prüfeJahr=="peniz" && prüfeMonat=="peniz" && prüfeTag=="peniz")
			{
			System.out.println ("\n" + "Das Datum ist plausibel!");
			}
				else
					{
					System.out.println("\n" + "Das Datum ist NICHT plausibel!");
					}
		
	}
	
	
	
	
	}

PS: Bei der Überprüfung if (prüfeJahr.equals("peniz") & prüfeMonat.equals("peniz") & prüfeTag.equals("peniz") )

kommt im falle eines falls eine fehlermeldung, wenn alle gleich sind funktioniert die ausgabe, hmmm
 
H

Hüte

Gast
Vervollständige bitte folgenden Satz: Ein Schaltjahr ist immer dann, ...

Und mit einer boolean-Variable wäre das einfacher. Entweder du nimmst an, dass es richtig ist und setzt es dann andernfalls auf falsch - oder umgekehrt
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Darstellung von Datum - Codes richtig? Java Basics - Anfänger-Themen 2
L Datum - Monat und Jahr werden falsch angezeigt Java Basics - Anfänger-Themen 4
T Datum als Variable wert Java Basics - Anfänger-Themen 4
T Datum in die als Variabelwert Java Basics - Anfänger-Themen 5
B Beliebiger String gegeben Suche Datum in String Java Basics - Anfänger-Themen 6
MiMa Ungültiges Datum wird nicht erkannt ?? Java Basics - Anfänger-Themen 6
S Algorithmus entwicklen, der zu einem gegebenen Datum die Jahreszeit ermittelt Java Basics - Anfänger-Themen 13
berserkerdq2 Wie datum im default format speichern? Java Basics - Anfänger-Themen 5
W Methode, die mit einem Datum arbeitet? Java Basics - Anfänger-Themen 22
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
J Datum ermitteln ? Java Basics - Anfänger-Themen 14
KogoroMori21 Java Datum Differenz (kleiner Fehler) Java Basics - Anfänger-Themen 10
J JDatePicker: Datum wird nicht in Textfeld übernommen Java Basics - Anfänger-Themen 5
N Zwei Daten (Datum) miteinander vergleichen, abspeichern, laden Java Basics - Anfänger-Themen 4
N Ein Datum berechnen Java Basics - Anfänger-Themen 3
T Datum und Uhrzeit Java Basics - Anfänger-Themen 4
B Liste von Tagen generieren ab einem bestimmten Datum und Endedatum Java Basics - Anfänger-Themen 4
B Datum in dieser Range SQL? Java Basics - Anfänger-Themen 3
F Ein Datum (int) durch Methode als String formatieren Java Basics - Anfänger-Themen 2
D Kontoauszüge von bestimmtem Datum Java Basics - Anfänger-Themen 35
B Termine (Datum erstellen), Abhängig von Intervallen Java Basics - Anfänger-Themen 0
A Nächstes Datum ausgeben, if-Schleife unklar Java Basics - Anfänger-Themen 6
J Best Practice Datum Differenz aus zwei Strings ermitteln Java Basics - Anfänger-Themen 8
Bluedaishi Datum in Jtextarea füllen Java Basics - Anfänger-Themen 5
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
S Datum umformatieren Java Basics - Anfänger-Themen 2
D Datum aus Swing in MySQL DB speichern Java Basics - Anfänger-Themen 22
F LimitedQueue auf Datum prüfen Java Basics - Anfänger-Themen 6
T Datum wird auf der Konsole richtig ausgegeben, aber im Textarea kommt ERROR Java Basics - Anfänger-Themen 8
D Projekte + Datum + löschen Java Basics - Anfänger-Themen 11
M Datum serialisieren Java Basics - Anfänger-Themen 1
S Datum einlesen Java Basics - Anfänger-Themen 1
D Aktuelles Datum wird falsch ausgegeben Java Basics - Anfänger-Themen 2
K Methoden Datum parsen Java Basics - Anfänger-Themen 16
C JList Einträge nach Datum sortieren Java Basics - Anfänger-Themen 3
MiMa Jüngstes Datum ermitteln Java Basics - Anfänger-Themen 4
2 Uhrzeit und Datum aktualisieren Java Basics - Anfänger-Themen 12
R Problem beim Wochenplan (Datum,Wochentag) Java Basics - Anfänger-Themen 30
O Datum-Werte gruppieren Java Basics - Anfänger-Themen 6
J Java Datum- Zeit Differenz bilden! Java Basics - Anfänger-Themen 4
M Methoden Aus Timestamp das Datum berechnen Java Basics - Anfänger-Themen 3
B Kontoauszug mit Datum ausgeben Java Basics - Anfänger-Themen 4
M Datum in Millisekunden allerdings ohne Uhrzeit Java Basics - Anfänger-Themen 4
DeVolt Java8 Paket Time: Datum prüfen / try-catch Java Basics - Anfänger-Themen 1
T Datum mit einem Datums-Bereich vergleichen Java Basics - Anfänger-Themen 10
J Datum und Uhrzeit in Datenbank falsch hinterlegt Java Basics - Anfänger-Themen 13
L Aus Datum Millisekunden ermitteln ohne Zeitzonen-Berücksichtigung Java Basics - Anfänger-Themen 6
P Wieviele Tage seit dem Datum vergangen sind Java Basics - Anfänger-Themen 5
P Liste nach Datum sortieren Java Basics - Anfänger-Themen 7
B tageszahl in Datum umrechnen Java Basics - Anfänger-Themen 6
F Datum Differenz berechnen Java Basics - Anfänger-Themen 7
B String in Datum Java Basics - Anfänger-Themen 3
M CompareTo soll Datum sortieren Java Basics - Anfänger-Themen 2
K Daten (im Sinne von Datum) aus Webseiten extrahieren Java Basics - Anfänger-Themen 6
AssELAss String in Datum umwandeln Java Basics - Anfänger-Themen 4
I Datum und Uhrzeitpattern von Locale Java Basics - Anfänger-Themen 7
H Wie wandel ich ein Datum in eine Zeichenkette um mit StringBuffer? Java Basics - Anfänger-Themen 3
I Datum ohne GregorianCalendar und co. Java Basics - Anfänger-Themen 3
A Datum zwischen zwei Daten berechnen und in Tagen anzeigen Java Basics - Anfänger-Themen 4
N Datum abgleichen und Frage zum Layout Java Basics - Anfänger-Themen 3
D Wochentag für eingegebenes Datum bestimmen anhand von Formel Java Basics - Anfänger-Themen 2
E Zeit zum bestimmten Datum in millisekunden berechnen Java Basics - Anfänger-Themen 5
M Aktuelles Datum in MySQL speichern Java Basics - Anfänger-Themen 11
P Datum umwandeln Java Basics - Anfänger-Themen 5
A Datum formatieren Java Basics - Anfänger-Themen 6
K Samstag einer Woche anhand eines Datum Java Basics - Anfänger-Themen 3
J Mit Datum rechnen Java Basics - Anfänger-Themen 11
B Datum ändern? Java Basics - Anfänger-Themen 8
Tally Methoden BlueJ - Datum als Kalendertag int - tagImJahr Java Basics - Anfänger-Themen 6
K wie Datum in JTable anders anzeigen lassen Java Basics - Anfänger-Themen 2
B Differenz von 2 Datum Java Basics - Anfänger-Themen 8
MiMa String Datum ermitteln Java Basics - Anfänger-Themen 9
D Hilfe beim SDF Datum Ausgabe Java Basics - Anfänger-Themen 20
A Aktuelles Datum einfügen.. Java Basics - Anfänger-Themen 4
K Datum und Uhrzeit als Date Objekt Java Basics - Anfänger-Themen 10
K Java Datum berechnen Java Basics - Anfänger-Themen 13
L Datum probleme Java Basics - Anfänger-Themen 6
S fehler beim datum parsen Java Basics - Anfänger-Themen 6
S Schleife Datum Java Basics - Anfänger-Themen 11
S Datum ändern bzw. abziehen Java Basics - Anfänger-Themen 3
M String in Datum umwandeln mit SimpleDateFormat Java Basics - Anfänger-Themen 3
E Datentypen Unvollständiges Datum parsen Java Basics - Anfänger-Themen 8
T Heutiges datum OHNE Calendar? Java Basics - Anfänger-Themen 9
K Wie Datum um einen Tag erhöhen? Java Basics - Anfänger-Themen 4
A Datum Prüfen Java Basics - Anfänger-Themen 3
B Wie aus einem Datum String eine Timestamp erzeugen Java Basics - Anfänger-Themen 6
E Datum und Uhrzeit von UTC in MET umrechnen Java Basics - Anfänger-Themen 6
E Methoden Datum , Uhrzeit, Nachricht in txt Datei schreiben Java Basics - Anfänger-Themen 3
E Eigene class datum Java Basics - Anfänger-Themen 2
A Datum formatieren Java Basics - Anfänger-Themen 8
E Algorithmen und Programmierung - Datum und Zeit ausgeben? Java Basics - Anfänger-Themen 8
M Datum aus einer Textdatei holen Java Basics - Anfänger-Themen 9
M Datum und Stunde als String ausgeben Java Basics - Anfänger-Themen 15
N Datentypen Datum konvertieren mit kurzer Monatsangabe Java Basics - Anfänger-Themen 3
U Java Datum vergleichen - Sommerzeitproblem Java Basics - Anfänger-Themen 5
R GregorianCalendar auf Datum reduzieren Java Basics - Anfänger-Themen 9
S Arbeiten mit einer CSV Datei und Überprüfen von einem Datum in einem Textfeldern Java Basics - Anfänger-Themen 4
F Datum AM / PM parsen Java Basics - Anfänger-Themen 5
A Datentypen Datum mit "May" zu Date parsen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben