Ga naar inhoud

Java Schrikkeljaar


johngrunn
 Delen

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


 Delen

×
×
  • Nieuwe aanmaken...