Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Miten lasketaan ikä vuosina?

for_123 [12.10.2018 01:15:19]

#

Tehtävä:
Tehtäväpohjassa tulee mukana edellä nähdyt luokat Henkilo ja Paivays. Täydennä luokan Henkilo metodia public int ikaVuosina() siten, että se laskee ja palauttaa henkilön tämän hetkisen iän vuosina.

Voit olettaa, että jokaisessa vuodessa on tasan 360 päivää.

Vinkki! Näppärä lähestymistapa on laskea päivien summa vuosien, kuukausien ja päivien perusteella. Erottamalla "nykypäivää" vastaavan päivien summan syntymäpäivän päivien summasta saat elettyjen päivien määrän. Eletyt päivät saa muunnettua takaisin vuosiksi jakolaskulla.

public int ikaVuosina() {
        LocalDate nyt = LocalDate.now();
        int vuosiNyt = nyt.getYear();
        int kuukausiNyt = nyt.getMonthValue();
        int paivaNyt = nyt.getDayOfMonth();

        // muokkaa tätä metodia sopivasti

        int syntvuosi = this.syntymaPaiva.getVuosi();
        int syntpv = this.syntymaPaiva.getPaiva();
        int syntkk = this.syntymaPaiva.getKuukausi();

        int ika = vuosiNyt - syntvuosi;

        if (kuukausiNyt < syntkk || paivaNyt < syntpv) {
            ika--;
        }
        return ika;
    }

testi ohjelma:

public class Main {

    public static void main(String[] args) {
        // Voit tehdä täällä tehtävään liittyviä kokeiluja
        Henkilo h = new Henkilo("Esim", 28, 9, 2015);
        System.out.println(h.ikaVuosina());
    }
}

ikä vuosina näyttää 1v vähemmän

osaisko joku kertoa missä mättää ?

TapaniS [12.10.2018 08:42:01]

#

for_123 kirjoitti:

if (kuukausiNyt < syntkk || paivaNyt < syntpv) {
ika--;

Tämä on pielessä. Laittaisin jotenkin näin:

if (kuukausiNyt < syntkk) {
    ika--;
else if (kuukausiNyt == syntkk && paivaNyt < syntpv) {
    ika--;

Grez [12.10.2018 09:37:07]

#

Tai sit jos haluaa kikkailla niin

if ((kuukausiNyt<<5 + paivaNyt) < (syntkk<<5 + syntpv)) { ika--; }

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta