Ga naar inhoud

Aanbevolen berichten

Geplaatst:

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,

Geplaatst:

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.

Geplaatst:

Jouw formule klopt enkel voor de eeuwjaren zoals 1800, 1900, 2000, 2100 maar niet voor de tussenliggende schrikkeljaren.

2012 was toch ook een schrikkeljaar maar volgens jouw formule niet want 2014 % 400 is niet 0.

Daarom is de 2de voorwaarde (deelbaar door 4 maar niet door 100) nodig.

Geplaatst:

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."

×
×
  • 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.