Ga naar inhoud

Java Schrikkeljaar


johngrunn

Aanbevolen berichten

Hallo,

wij zijn op onze opleiding net week gestard met java via Bluej

nu moeten wij personen laten registreren zegmaar, en daarbij moet de geboortedatum gecheckt worden.

in principe controlleert het programma nu of normale datums geldig zijn of niet..

alleen schrikkeljaar moet nog.. ik weet wel welke formule te gebruiken. maar weet hem niet te plaatsen.

hier is de code die we nu hebben:

public void setGeboortedatum(int dezeGeboortedag, int dezeGeboortemaand, int ditGeboortejaar)

{Geboortedag = dezeGeboortedag;

Geboortemaand = dezeGeboortemaand;

Geboortejaar = ditGeboortejaar;

checkGeboortedatum = Geboortedag+"/"+Geboortemaand;

if (Geboortedag <= 0 || Geboortedag >= 31 || Geboortemaand <= 1 || Geboortemaand > 12 || Geboortejaar < 1900 || Geboortejaar > 2100){

Geboortedag = 0;

Geboortemaand = 0;

Geboortejaar = 0;}

else {

switch (checkGeboortedatum){

case "31/2":

case "30/2":

case "31/4":

case "31/6":

case "31/9":

case "31/11":

case "29/11":

Geboortedag = 0;

Geboortemaand = 0;

Geboortejaar = 0;

}}}

de code die waarschijnlijk gebruikt moet worden komt in de buurt van:

if(jaar % 4 == 0) {

if((jaar % 100 == 0) && (jaar % 400 != 0))

Mvg,

Link naar reactie
Delen op andere sites

Is het ook nog nodig dat je code iets moet teruggeven als het niet klopt? Of is een 'false' ook goed?

Zodat je in je gewone code een melding kunt plaatsen zoals:

if(setGeboortedatum == false){
  println("de geboortedatum die is ingevuld is geen geldige datum");
}

De code die je gebruikt is bijna goed, je kunt ook de controle gebruiken

if(jaar % 400 == 0){
   // jaar is schrikkeljaar
}else{
   // jaar is geen schrikkeljaar
}

Ook kun je misschien beter een aantal prive methodes maken die deze controles afvangen

private boolean checkSchrikeljaar(int jaar){
    return (jaar % 400 == 0);
}

In je setGeboortedatum methode kun je dan de code gebruiken:

public boolean setGeboortedatum(...){
    if(this.checkSchrikkeljaar(jaar))
          return false;
    if(this.checkOnbekendeDatums(jaar, maand, dag))
          return false;

    return true;
}

Wat deze code doet is controleren of het jaar een schrikkeljaar is, is dat zo, dan geeft de code een 'false' terug en stopt de rest van de code

Zo niet, dan controleert de code of de datum wel bestaat (33 januari bijv). Klopt de datum niet, dan geeft de code een 'false' terug en stopt de rest van de code.

Zo niet, dan geeft de code een true terug.

Als dit niet is wat je bedoeld, dan weet ik niet precies wat je dan wel bedoeld. Iets meer uitleg is dan gewenst.

Link naar reactie
Delen op andere sites

weetje (maar niet voor onze generaties van echt belang: "Gewoonlijk zijn eeuwjaren geen schrikkeljaren, tenzij ze deelbaar zijn door 400. Paus Gregorius XIII besloot dat in 1582. Om de kalender in de pas te laten lopen met de Zon stelde hij dat jaartallen deelbaar door 100 geen schrikkeljaren zijn, tenzij ze ook deelbaar zijn door 400."

Link naar reactie
Delen op andere sites

×
×
  • Nieuwe aanmaken...

Belangrijke informatie

We hebben cookies geplaatst op je toestel om deze website voor jou beter te kunnen maken. Je kunt de cookie instellingen aanpassen, anders gaan we er van uit dat het goed is om verder te gaan.