Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Karkausvuoden tarkastus

Sivun loppuun

kukkakaali [31.10.2017 18:14:32]

#

public class Karkausvuosi {

    public static void main(String[] args) {
        Scanner lukija = new Scanner(System.in);

        System.out.println("Anna vuosi: ");
        int vuosi = Integer.parseInt(lukija.nextLine());

        if (vuosi % 4 == 0) {

            System.out.println("Vuosi on karkausvuosi.");

        }else if (vuosi % 100 == 0 && vuosi % 400 == 0){
            System.out.println("Vuosi on karkausvuosi.");

        }else {
            System.out.println("Vuosi ei ole karkausvuosi.");
        }
    }
}

Koodin pitäisi tulostaa arvolla 1800 tuon tekstin että "vuosi ei ole karkausvuosi." mutta sen sijaan tulostaa "vuosi on karkausvuosi."

Missäköhän olen mennyt vikaan?

TuomasK [31.10.2017 18:18:45]

#

Onko vuosi 1800 jaollinen neljällä?
Mitä silloin tekee ensimmäinen if-lause?

kukkakaali [31.10.2017 18:25:28]

#

Oliskohan opettajat tehny källin.Mun mielestä tuo on oikein:(

ääh ei aukene...

Pitäisköhän toi muotoilla jotenkin toisin että sais ton toimimaan?

Lisäys: oisko ideoita?Suora vastaus tarvitaanXD

Lisäys: siis tarkoitin oikea vastaus.Jostain syystä kirjoittaminenkin on välillä vähän hankalaa:)

Pessi [31.10.2017 18:41:19]

#

Kokeiles muokata noita tulostuksia seuraavasti.

if (vuosi % 4 == 0) {
    System.out.println("Vuosi on karkausvuosi. Ensimmainen karkaus");

}else if (vuosi % 100 == 0 && vuosi % 400 == 0){
    System.out.println("Vuosi on karkausvuosi. Toinen karkaus");

}else {
    System.out.println("Vuosi ei ole karkausvuosi.");
}

Mitä huomaat tulosteessa? Mikä tulostus pitäisi olla? Missä voisi olla vika? TuomasK antoi jo hyvän vinkin ongelma kohdasta.

kukkakaali [31.10.2017 19:01:37]

#

Palailen asiaan...

Macro [31.10.2017 19:03:44]

#

Sulla on logiikassa virhe.

Wikipedia kirjoitti:

Juliaanisessa kalenterissa karkausvuosi oli poikkeuksetta joka neljäs vuosi[1], vuosiluvun ollessa jaollinen neljällä. Gregoriaanisessa kalenterissa tästä on se poikkeus, että täydet vuosisadat (eli sadalla jaolliset vuodet) eivät ole karkausvuosia muulloin kuin joka 400. vuosi (eli vuosi on jaollinen 400:lla). Esimerkiksi vuodet 1700, 1800 ja 1900 eivät olleet karkausvuosia, mutta 1600 ja 2000 olivat.

Metabolix [31.10.2017 22:36:47]

#

Nyt olet määrittänyt, että karkausvuosia ovat kaikki neljällä jaolliset vuodet. Toiseen if-lauseeseen päädytään vain, jos vuosi ei ole neljällä jaollinen, ja silloin se ei ole jaollinen myöskään sadalla tai 400:llä.

Tutki ensimmäisessä if-lauseessa, onko vuosi jaollinen 400:llä, ja toisessa if-lauseessa, onko vuosi jaollinen neljällä mutta ei sadalla.

Nämä if-lauseet voi tiivistää tai-operaattorilla myös yhteen if-lauseeseen.

kukkakaali [01.11.2017 11:35:20]

#

No nyt toimii,tänks.En aivan vielä ymmärrä logiikkaa mutta kaippa se vielä aukenee. Pikkasen hämää kun en ite tajunnu tätä mutta ei sen puoleen ei mulla ollu hajuakaan esimerkiks mikä toi karkausvuosikaan on:)


Sivun alkuun

Vastaus

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

Tietoa sivustosta