Viopen Java-kurssilla, vertailuoperaattoritehtävä

Anonyymi

Voisko joku fiksumpi kertoa mitä koodissani on väärin? Olen kokeillut ihan kaikkea ja googlaillut monta tuntia ja useampana päivänä, mutta en vaan saa tätä oikein!!
Kiitos tuhannesti jo etukäteen jos joku osaa auttaa :)

Tehtävänanto:
Tee ohjelma, joka kysyy ensin käyttäjän sukupuolen ja tämän jälkeen iän. Lopuksi ohjelma tulostaa jonkin lausahduksen seuraavan ohjeen mukaisesti:
- Mies 0-55 vuotta: "Olet mies parhaassa iässä!"
- Mies 56-100 vuotta: "Olet viisas mies!"
- Nainen 0-55 vuotta: "Olet neito kauneimmillaan!"
- Nainen 56-100 vuotta: "Olet nuori ikäiseksesi!"
- muuten "Ohjelmassa tapahtunut virhe!"

Ikä käsitellään kokonaislukumuuttujana ja sukupuoli merkkimuuttujana (m/n). Isoja kirjaimia ei tarvitse huomioida.


Yritykseni ratkaista:

import java.io.*;

public class Tulostus {
public static void main(String[] args) {
int ika;

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

try {
System.out.print("Oletko mies vai nainen (m/n)?");
String sukupuoli = in.readLine();
char jonon_eka_merkki = sukupuoli.charAt(0);

System.out.println("Anna ikäsi:");
ika = Integer.parseInt(in.readLine());

if (ika >= 0 && ika <= 55 && jonon_eka_merkki.equals('m'))
System.out.println("Olet mies parhaassa iässä!");
else if (ika >= 56 && ika <= 100 && jonon_eka_merkki.equals('m'))
System.out.println("Olet viisas mies!");
else if (ika >= 0 && ika <= 55 && jonon_eka_merkki.equals('n'))
System.out.println("Olet neito kauneimmillaan!");
else if (ika >= 56 && ika <= 100 && jonon_eka_merkki.equals('n'))
System.out.println("Olet nuori ikäiseksesi!");
else System.out.println("Ohjelmassa tapahtunut virhe!");

} catch(Exception e) {
System.out.print("Antamasi syöte oli virheellinen...");
}
}
}

11

1459

    Vastaukset 11

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Anonyymi
      • Anonyymi

        Kiitos paljon vastauksesta! Kokeilin myös noita aaltosulkeita, mutta se ei tuntunut auttavan. Myöskään kurssin esimerkissä ei käytetty aaltosulkeita if ja if else -lauseissa, ilmeisesti siksi että ovat try - catch -lauseen sisällä. Sain koodin onnistumaan pelkkää ikää kysyttäessä, joten uskoisin että vika on tuossa sukupuolen kysymisessä.

        Tämä tehtävä on kyllä tosi hankala!


      • Anonyymi kirjoitti:

        Kiitos paljon vastauksesta! Kokeilin myös noita aaltosulkeita, mutta se ei tuntunut auttavan. Myöskään kurssin esimerkissä ei käytetty aaltosulkeita if ja if else -lauseissa, ilmeisesti siksi että ovat try - catch -lauseen sisällä. Sain koodin onnistumaan pelkkää ikää kysyttäessä, joten uskoisin että vika on tuossa sukupuolen kysymisessä.

        Tämä tehtävä on kyllä tosi hankala!

        Aaltosulkeita ei tarvitse, jos suoritettavassa lohkossa on vain yksi lause (eli jos aaltosulkeita ei laita, niin if ottaa vain seuraavan yhden lauseen "sisälleen"). Suositeltavaa niitä on kyllä käyttää aina, niin ei tule epäselvyyksiä.


      • minkkilaukku kirjoitti:

        Aaltosulkeita ei tarvitse, jos suoritettavassa lohkossa on vain yksi lause (eli jos aaltosulkeita ei laita, niin if ottaa vain seuraavan yhden lauseen "sisälleen"). Suositeltavaa niitä on kyllä käyttää aina, niin ei tule epäselvyyksiä.

        Tietenkin, jos se siinä on vain joku hyvin lyhyt yksinkertainen, joka mahtuu samalle riville, niin sitten ehkä aaltosulkeet on sallittua jättää pois.


    • Anonyymi

      Tsekkaa ensin että onko merkkijono m TAI n JA (ikä >= 0 JA ikä <= 100). Jos ei ole niin tulosta "virhe". Sen jälkeen tsekkaa Ifissä oliko merkkijono m, jonka jälkeen tsekkaat iän ja tulostat jomman kumman mies-kommentin. Else-lohkossa tsekkaat iän ja tulostat sopivan nais-kommentin.

    • Anonyymi
    • Korvaa tuo equals vertailu ==:lla.
      Eli esim
      jonon_eka_merkki == 'm'

      • Anonyymi

        Kiitos!! Tuo equalsin korvaaminen == -merkillä auttoi! Jee! Tehtävä meni läpi. Itse olin jostain syystä uskossa että == -merkkiä saa käyttää vain jos on numeroista kyse ja muissa tapauksissa tulisi käyttää equalsia.


      • Anonyymi
        Anonyymi kirjoitti:

        Kiitos!! Tuo equalsin korvaaminen == -merkillä auttoi! Jee! Tehtävä meni läpi. Itse olin jostain syystä uskossa että == -merkkiä saa käyttää vain jos on numeroista kyse ja muissa tapauksissa tulisi käyttää equalsia.

        Jaavasta en tiedä, mutta ainakin ehdassa C-kielessä char on vastaavanlainen numeerinen arvo kuin vaikkapa int. Merkkijono on sitten tyyppiä char *, eli arvo on muistiosoitin.


      • Anonyymi kirjoitti:

        Kiitos!! Tuo equalsin korvaaminen == -merkillä auttoi! Jee! Tehtävä meni läpi. Itse olin jostain syystä uskossa että == -merkkiä saa käyttää vain jos on numeroista kyse ja muissa tapauksissa tulisi käyttää equalsia.

        Joo char on primitiivi, kuten int, double yms. Tuo equals-metodi on objekteille.

        Primitiiveillekin on sitten olemassa wrapper-luokat (eli objekti, joka vain pitää sisällään kyseistä primitiivin arvoa) esim Character.

        Eikös sulla muuten kääntäjä kertonut sitä että virhe on noissa neljässä kohdassa?


      • Anonyymi
        minkkilaukku kirjoitti:

        Joo char on primitiivi, kuten int, double yms. Tuo equals-metodi on objekteille.

        Primitiiveillekin on sitten olemassa wrapper-luokat (eli objekti, joka vain pitää sisällään kyseistä primitiivin arvoa) esim Character.

        Eikös sulla muuten kääntäjä kertonut sitä että virhe on noissa neljässä kohdassa?

        Linuxin javac herjaa ainakin "error: char cannot be dereferenced".


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Ampuminen kylpylässä

      Onko vornasen timbe käynyt hiukan kylpemässä vai mikä tämä ampumatapaus on kylpylässä? Tuntuu aika villi meno olevan naa
      Naantali
      75
      1749
    2. Naantalin kylpylän ampujat

      Oli somppumatuja. Nyt mennään. Suomi on ruotsi.
      Maailman menoa
      24
      1226
    3. Kemijärvellä vesionnettomuus

      Pitkänsillan ja taiteilijanniemen välillä nähty henkilön painuvan veden alle. Mitä on tapahtunut? Onko vesihiisi taas as
      Kemijärvi
      34
      1122
    4. Hei, voitko kuunnella

      Voisitko auttaa minua selvittämään asioita? En halua ajaa sinua hulluuteen kanssani, en sitoa sinua, en esittää vaatimu
      Ikävä
      135
      933
    5. Joku porukka lähtenyt täältä

      Ihmeen hiljainen on palsta nyt. Yleensä tänne tulvii aloituksia yms, mutta nyt on kyllä erikoisen hiljaista.
      Ikävä
      189
      836
    6. Miten yrität

      Vielä saada kaivattusi?
      Ikävä
      64
      704
    7. 77
      642
    8. Olipa yllätys

      Kuten hyvin moni tiesi/arvasi että valetta alusta loppuun toi *olemme ystäviä* satu. Instassaan käsi kädessä kuva kertoo
      Kotimaiset julkkisjuorut
      192
      629
    9. On todella ikävää

      Todella ikävää, että asiat ovat menneet tällaisiksi. Tämä ei ollut missään vaiheessa tarkoitukseni. Olen tehnyt virheit
      Ikävä
      79
      608
    10. Tuletko tänään

      Jos soitan? Niin... tuletko?🖤
      Ikävä
      49
      581
    11. Se kun olit pitkästä aikaa silmieni edessä

      Oli kyllä sykähdyttävää. Tiedätkö, mikä laittaa minut ikävöimään sinua? Kun palautan mieleeni valtavan ihanan olemuksen,
      Ikävä
      32
      528
    12. Ottanet yhteyttä

      Facebookissa,jos on jotain asiaa.Miehelle! T.M-nainen.
      Ikävä
      55
      517
    13. Muutto auto hakee sut tänään!

      Tein sulle oman huoneen! mieheltä naiselle
      Ikävä
      57
      502
    14. 36
      484
    15. Oletteko koskaan torjuneet kaivattuanne?

      Minä olen, kun en silloin tajunnut vielä ihastuneeni. Yritin paikata tapahtunutta, mutta ei onnistunut enää.
      Ikävä
      25
      457
    16. Kai sä mies ymmärrät..

      ..ettet jättänyt vaihtoahtoa. Tottakai toivon vielä, että pystyisit toimimaan niin että asiat korjaantuisivat. Vahvast
      Ikävä
      28
      432
    17. En tiedä mitä sanoa

      Siksi en vastannut😔
      Ikävä
      33
      423
    18. Jos kaivattusi olisi

      Vieressäsi niin mitä tekisit?
      Ikävä
      40
      417
    19. Kiinni jäit

      Ei olisi uskonut sinusta
      Ikävä
      17
      417
    20. Päivän galluppi

      Minkälainen ehkäisy sinkkupalstalaisilla käytössä?
      Sinkut
      82
      398
    Aihe