Java Eclipse

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik wilde een klein programmaatje maken waarbij je je leeftijd ingeeft, waarna het geboortejaar berekent wordt door middel van Calendar.getInstance(); enzovoort...
Maar standaard is er iets fout met de YEAR, die ik nodig heb.
Ik moet er nu '-1' achter zetten, anders klopt het geboortejaar niet.
Heb al vanalles met TimeZone geprobeert maar helpt ook niet.

Zie hier mijn code:


import java.util.Calendar;
import java.util.TimeZone;
import console.*;

public class geboortejaar {
public static void main(String arg[]) {

System.out.print("Naam : ");
String naam = Console.readString();
System.out.print("Leeftijd : ");
int leeftijd = Console.readInt();

System.out.println();

Calendar year = Calendar.getInstance();

System.out.println(naam + " werd geboren in " + ((year.get(Calendar.YEAR) -1) - leeftijd) + ".");
}
}

Zoals het hierboven staat moet ik dus met die -1 werken... :/

Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 10-08 02:59

Gerco

Professional Newbie

Test je het toevallig op jezelf en ben je na 15 januari geboren? Dan klopt het resultaat wat je krijgt :)

De datum van een Calendar instance staat standaard op "vandaag". Stel je bent op 1 juni 1980 geboren en bent nu dus 29. 2010-29 = 1981. Na 1 juni is de som 2010-30 = 1980 en klopt het resultaat dus wel :)

Overigens compilet je code niet, dus het lijkt me dat je een copy/paste foutje of wat gemaakt hebt of wat hebt weggelaten.

[ Voor 16% gewijzigd door Gerco op 15-01-2010 19:06 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

  • fiftyhillswest
  • Registratie: Oktober 2009
  • Laatst online: 19-09 15:10
En wat is daar het probleem van? Het berekent toch het goede jaar? Heb je al in de Java documentatie wat YEAR teruggeeft?

Waarschijnlijk komt het omdat Calendar.YEAR vanaf 1 begint te tellen en wij vanaf 0 zul je er af moeten halen, zoals hier ook beschreven staat: http://mindprod.com/jgloss/calendar.html

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Gerco schreef op vrijdag 15 januari 2010 @ 19:02:
Test je het toevallig op jezelf en ben je na 15 januari geboren? Dan klopt het resultaat wat je krijgt :)

De datum van een Calendar instance staat standaard op "vandaag". Stel je bent op 1 juni 1980 geboren en bent nu dus 29. 2010-29 = 1981. Na 1 juni is de som 2010-30 = 1980 en klopt het resultaat dus wel :)

Overigens compilet je code niet, dus het lijkt me dat je een copy/paste foutje of wat gemaakt hebt of wat hebt weggelaten.
Waarom beginnen bij VANDAAG ?? Hoe kan ik dan instellen zodat hij begint van 1 Jan? (wat logisch is :P )

Acties:
  • 0 Henk 'm!

  • Raynman
  • Registratie: Augustus 2004
  • Laatst online: 19:46
Eerste stap bij debuggen zou dan zijn:
Java:
1
System.out.println(year.get(Calendar.YEAR));


Dan zie je of er inderdaad "standaard iets fout is met de YEAR".

En het is wel zo fijn als je [code=java] gebruikt.

Edit (n.a.v. nieuw bericht): ik neem aan dat je de datum zelf op 1 januari kunt zetten, maar bovenstaande zal dan nog steeds 2010 geven, dus je houdt hetzelfde probleem. Je zult dus ook nog de verjaardag moeten vragen, of in elk geval of 'naam' dit jaar al jarig is geweest.

[ Voor 30% gewijzigd door Raynman op 15-01-2010 19:13 ]


Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 10-08 02:59

Gerco

Professional Newbie

Verwijderd schreef op vrijdag 15 januari 2010 @ 19:08:
Waarom beginnen bij VANDAAG ?? Hoe kan ik dan instellen zodat hij begint van 1 Jan?
Vermoedelijk kun je het antwoord vinden op deze pagina: http://java.sun.com/javas...i/java/util/Calendar.html

Deze beschrijft alle functies die een Calendar object heeft, dus ook de tijd en datum instellen.
(wat logisch is :P)
Omdat in zo'n beetje 99,999999% van alle gevallen dat je een Calendar wilt hebben je die nodig hebt om de huidige datum en tijd vanaf te lezen en eventueel te manipuleren. Wat is logischer, in vrijwel alle gevallen extra code moeten schrijven om het object te kunnen gebruiken of alleen in uitzonderingen?

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Raynman schreef op vrijdag 15 januari 2010 @ 19:09:
Eerste stap bij debuggen zou dan zijn:
Java:
1
System.out.println(year.get(Calendar.YEAR));


Dan zie je of er inderdaad "standaard iets fout is met de YEAR".

En het is wel zo fijn als je \[code=java] gebruikt.
Ik zal in het vervolg java code gebruiken ;)

Maar ik geef dus geen datum mee eh..! Gewoon de leeftijd als int, die ik vervolgens aftrek van year.get(Calendar.YEAR)
Maar dan krijg ik dus een uitkomst die 1 jaar verschilt..

Acties:
  • 0 Henk 'm!

  • Raynman
  • Registratie: Augustus 2004
  • Laatst online: 19:46
Zie nogmaals Gerco's post en mijn edit. Je (of preciezer: je code/main-functie) geeft die hele leeftijd nergens aan mee (niet aan een (member)functie in elk geval, wel aan een binaire operator voor het aftrekken).

Ik snap de topictitel ook niet helemaal: wat heeft Eclipse ermee te maken?

[ Voor 15% gewijzigd door Raynman op 15-01-2010 19:19 ]


Acties:
  • 0 Henk 'm!

  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
Denk nog eens even goed na over wat je probeert te doen. Je maakt namelijk een denkfout, die op zich helemaal niets met Java te maken heeft. Als ik zeg dat mijn leeftijd 36 is, maakt het voor het bepalen van mijn geboortejaar namelijk nogal uit of mijn verjaardag in het huidige jaar al wel, of nog niet geweest is...

"Any sufficiently advanced technology is indistinguishable from magic."


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Raynman schreef op vrijdag 15 januari 2010 @ 19:16:
Zie nogmaals Gerco's post en mijn edit. Je (of preciezer: je code/main-functie) geeft die hele leeftijd nergens aan mee (niet aan een (member)functie in elk geval, wel aan een binaire operator voor het aftrekken).

Ik snap de topictitel ook niet helemaal: wat heeft Eclipse ermee te maken?
Sorry, Eclipse heeft er idd nix mee te maken. :X

Maar de oplossing zou dus gewoon zijn om een datum mee te geven?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Herko_ter_Horst schreef op vrijdag 15 januari 2010 @ 19:21:
Denk nog eens even goed na over wat je probeert te doen. Je maakt namelijk een denkfout, die op zich helemaal niets met Java te maken heeft. Als ik zeg dat mijn leeftijd 36 is, maakt het voor het bepalen van mijn geboortejaar namelijk nogal uit of mijn verjaardag in het huidige jaar al wel, of nog niet geweest is...
Dat was idd een denkfout.. :o :9

Dan ga ik maar een datum meegeven

Acties:
  • 0 Henk 'm!

  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
Ik kan je aanraden eerst op papier de stappen op te schrijven die je moet doorlopen om iemands geboortejaar te berekenen en welke gegevens je daar minimaal voor nodig hebt. Vervolgens kijk je dan in de API documentatie op welke manier je de gegevens kunt ophalen en de berekening kunt laten uitvoeren.

"Any sufficiently advanced technology is indistinguishable from magic."

Pagina: 1