Datum prüfen

Status
Nicht offen für weitere Antworten.

Skahead

Mitglied
Hallo,

ich habe ein Programm welches mir das eingegebene Datum in 3 verscheidenen Varianten ausgibt und eine neue Methode erstellt die das Datum prüfen soll. Sowie es die Aufgabenstellung vom leher möchte. Im Struktogramm haben wir es mit wenn;dann;sonst gelöst. Mein problem jetzt:
Ich möchte das Schaltjahr per Selektion pruefen. bin ich hiermit richtig?
Java:
	public void pruefeDatum(){
		
		if (jahr%4&&!jahr%100||jahr%400){
			(schaltjahr=ok)
		}
		else if (jahr/4&&!jahr/100||jahr%400){
			(schlatjahr = nicht ok)
		}
	
	}

oder muss ich das mit switch und case versuchen?
Da schlatjahr wird gebraucht um festzulegen wie viel tage der monat februar hat und die restlichen kontrollstrukturen sollen festelgen in welchen wertebereichen, sich die tage der restlichen monate befinden dürfen und welche plausibel sind.
Kann mir jmd helfen?

LG
skahead
 
S

SlaterB

Gast
es reicht ein if,
wenn du im else-Fall bist, dann ist es 'nicht ok', da musst du die Bedingung nicht noch mal hinschreiben

für Java wäre an der Bedingung noch viel zu feilen, bei && und || sollte man Klammern setzen,
man kann kaum davon ausgehen, dass Java alles richtig interpretiert,

und jahr%4 ist eine Zahl, kein boolean
 

Skahead

Mitglied
Danke für deine Antwort, hab wieder was dazugelernt. Ichwerd mal bissl ausprobieren und posten sobald sich etwas ergibt. Aber was ist denn ein Boolean?


LG
Skahead
 
S

SlaterB

Gast
ein Wahrheitswert, true oder false

'true && true' ergibt wieder etwas, '4 && 12' mit Zahlen ist dagegen Quatsch
 

Skahead

Mitglied
ja das stimmt
hab folgende Lösung nach meinem Struktogramm als Ergebnis. Folgendes Porblem tritt ein. ich bekomme bei egal welchen testwerten "plausibel" raus.wie kann das sein?

Java:
if (jahr%4==0&&!(jahr%100==0)||(jahr%400==0)) {
			pruefeSchaltjahr=true;
		}
			else {
				pruefeSchaltjahr=false;
			}
	
		if (jahr<=1&&jahr>=9999){
			pruefeJahr=true;
		}
			else {
				pruefeJahr=false;
			}
		
		
		if (monat<=1&&(monat>=12)){
			pruefeMonat=true;
		}
			else {
				pruefeMonat=false;
			}
		
		
		if (monat==1||monat==3||monat==5||monat==7||monat==8||monat==9||monat==11){
			letzterTagMonat=31;
		}
		
		if (monat==4||monat==6||monat==10||monat==12){
				letzterTagMonat=30;
			}
		if (monat==2&&(pruefeSchaltjahr=true)){
					letzterTagMonat=28;
				}
		
					else if (monat==2&&(pruefeSchaltjahr=false)){
						letzterTagMonat=29;
					}

                if (tag>=1&&(tag<=letzterTagMonat)){
						pruefeTag=true;
					}
						else {
							pruefeTag=false; 
						}			

		if (pruefeJahr=true&&(pruefeTag=true)&&(pruefeMonat=true)){
			System.out.println("pausibel.");
		}
		 else if (pruefeJahr=false||(pruefeTag=false)||(pruefeMonat=false)){
			 System.out.println("nicht plausibel.");
		 }


LG
Skahead
 
Zuletzt bearbeitet:
S

SlaterB

Gast
if (pruefeJahr=true &&
-> Variable pruefeJahr wird auf true gesetzt, if ist immer erfüllt (abgesehen von &&)

if (pruefeJahr==true &&
-> Variable pruefeJahr bleibt unverändert, if ist nur dann erfüllt, wenn pruefeJahr true enthält (abgesehen von &&)

if (pruefeJahr &&
-> das gleiche ohne Möglichkeit für Tippfehler
 

Skahead

Mitglied
Java:
if (jahr<=1&&jahr>=9999){
            pruefeJahr=true;
        }
            else {
                pruefeJahr=false;
            }

bedeutet dann das die boolean-Variable "pruefeJahr" immer true ist?
aber das sonsthat doch auch einfluss darauf... verstehs nicht ganz
 
S

SlaterB

Gast
in Zeile 46 steht
> if (pruefeJahr=true &&

dort muss aber
if (pruefeJahr==true &&
stehen

sowie an diversen Stellen derselbe Fehler, == ist was anderes als =

am besten nur
if (pruefeJahr &&
schreiben
 

Michael...

Top Contributor
Du setzt die Werte in Zeile 46 auf true - man vergleicht mit ==. Abgesehen davon muss man booleans nicht mit true vergleichen.
Ausserdem:
- bei Dir wird geprüft, ob jahr kleiner 1 und größer 9999 ist --> das kann niemals so sein --> pruefeJahr = false
Code:
if (jahr <= 1 && jahr >= 9999) { 
	pruefeJahr = true;

- gleiches gilt für die Überprüfung des Monats
- Oktober und Dezember haben 31 Tage, September und November nur 30
 

Skahead

Mitglied
Vielen Dank. Es lag tatsächlich an den Zeichen "Größer-Gleich" und "Kleiner-Gleich".
habs geändert und es läuft.
LG
Skahead
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben