Viopen verkkokurssi ongelma

Elikkäs Viopessa menossa Javan perusteet -kurssi ja törmäsin ongelmaan. Tässä on tehtävän anto:

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

Vihje:
Käytä riittävästi aikaa ohjelman suunnitteluun, ennen kuin ryhdyt kirjoittamaan ohjelmaa. Käyttäjän syöttämän kirjaimen voit poimia String-muuttujan ensimmäisestä alkiosta.
------------------------------------------------------------------------------------------------------------
Tässä on tämänhetkinen ohjelmani:

import java.io.*;

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

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

try {

System.out.print("Oletko mies vain nainen (m/n)?");
String sukupuoli = in.readLine();

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

switch (sukupuoli)
{
case 'm':

if(ika > 0 && ika < 56)
System.out.println("Olet mies parhaassa iässä!");

else if(ika >= 56 && ika < 101)
System.out.println("Olet täysi-ikäinen.");

else
System.out.println("Ohjelmassa on tapahtunut virhe!");
break;
default:
System.out.println("Ohjelmassa on tapahtunut virhe");
}
} catch(Exception e) {

System.out.print("Antamasi syöte oli virheellinen...");
}
}
}

------------------------------------------------------------------------------------------------------------

Tarkkaan en oikein tiedä mikä mättää, ainakin nuo merkit ovat tuottaneet ongelmia ja viimeisimmän virheen viope näyttää switch() metodin kohdalla. (Olen myös tarkoituksella jättänyt naisen pois sillä yritän nyt saada tätä ensiksi toimimaan). Vuodelta 2006 taisi olla samankaltainen keskustelu josta ei ollut apua.
85322
Äänestä

Muut lukivat myös

Vastaukset 8

Vanhimmat

Enpä tiedä mikä aivopieru oli ohjelma tuohon pistää, tässä kuitenkin vähän paremmin: http://pastebin.com/Y8bSce1q

Äänestä

Kärsin samasta tehtävästä, pääsitkö tässä eteenpäin ja jos niin miten?
Herjaa minulle riveistä 24-26

Lähdekoodissasi on virheitä. Tarkista mm. seuraavat asiat:
Muuttujien oikeinkirjoitus
Funktioiden esittely
Sulkujen ja lainausmerkkien parillisuus

Yritin siis ilman tota switch casea tähän tyyliin, sisältää varmasti kummallisuuksia:


1: import java.io.*;
2:
3: public class Tulostus {
4: public static void main(String[]args){
5: int ika;
6: String sukupuoli;
7: BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
8:
9: try {
10: System.out.print("Oletko mies vai nainen (m/n)?");
11: String sukupuoli = in.readLine();
12:
13: System.out.println("Anna ikäsi:");
14: ika = Integer.parseInt(in.readLine());
15:
16: if (ika > 0 && ika = 56 && ika < 100 && sukupuoli == 'm')
20: System.out.println("Olet viisas mies!");
21:
22: else if (ika > 0 && ika = 56 && ika < 100 && sukupuoli == 'n')
26: System.out.println("Olet nuori ikäiseksesi!");
27:
28: else System.out.println("Et taida olla varma iästäsi tai sukupuolestasi?");
29:
30: }catch(Exception e) {
31: System.out.print("Antamasi syöte oli virheellinen...");
32: }
33: }
34: }

Pistin jo yhdestä aiemmasta tehtävästä kyselyä opettajalle mutta ei kesällä saa liiemmin vastauksia.. :)

Äänestä
  • Ja sitten kun katsoo kääntäjän avulla niin se herjaa jokaisesta vertailusta näin:

    Tulostus.java:25: incomparable types: java.lang.String and char

    else if (ika >= 56 && ika < 100 && sukupuoli == 'n')

    Noiden kahden intin ja yhden stringin vertailu ei kyllä tällä mun tyylillä onnistu, inspiraatiota odotellessa. :)

    Äänestä

  • what kirjoitti:

    Ja sitten kun katsoo kääntäjän avulla niin se herjaa jokaisesta vertailusta näin:

    Tulostus.java:25: incomparable types: java.lang.String and char

    else if (ika >= 56 && ika < 100 && sukupuoli == 'n')

    Noiden kahden intin ja yhden stringin vertailu ei kyllä tällä mun tyylillä onnistu, inspiraatiota odotellessa. :)

    Hiiohoi! Sain tehtävän pakerrettua ja laitan sen nyt tähän! Jos joku muu joskus etsii apuja tähän tehtävään. :) Hassua ettei tolla viopen muuten niin tarkalla teorialla ollut tossa vitos luvussa näistä stringien ja charien käytöstä sen enempää käyttöohjeita mutta kivahan näiden kanssa VÄLILLÄ on tuskastella.. :)
    Eli kumpaakaan Stringiä tai charia ei tarvinnut esitellä ohjelman alussa!

    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 = 56 && ika < 100 && jonon_eka_merkki == 'm')
    System.out.println("Olet viisas mies!");

    else if (ika > 0 && ika = 56 && ika < 100 && jonon_eka_merkki == '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...");
    }
    }
    }

    Äänestä

  • what kirjoitti:

    Ja sitten kun katsoo kääntäjän avulla niin se herjaa jokaisesta vertailusta näin:

    Tulostus.java:25: incomparable types: java.lang.String and char

    else if (ika >= 56 && ika < 100 && sukupuoli == 'n')

    Noiden kahden intin ja yhden stringin vertailu ei kyllä tällä mun tyylillä onnistu, inspiraatiota odotellessa. :)

    Merkkijonojen kanssa ei voi käyttää ==-operaattoria. Sen sijaan täytyy käyttäää equals()-metodia.

    Äänestä

  • what kirjoitti:

    Hiiohoi! Sain tehtävän pakerrettua ja laitan sen nyt tähän! Jos joku muu joskus etsii apuja tähän tehtävään. :) Hassua ettei tolla viopen muuten niin tarkalla teorialla ollut tossa vitos luvussa näistä stringien ja charien käytöstä sen enempää käyttöohjeita mutta kivahan näiden kanssa VÄLILLÄ on tuskastella.. :)
    Eli kumpaakaan Stringiä tai charia ei tarvinnut esitellä ohjelman alussa!

    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 = 56 && ika < 100 && jonon_eka_merkki == 'm')
    System.out.println("Olet viisas mies!");

    else if (ika > 0 && ika = 56 && ika < 100 && jonon_eka_merkki == '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...");
    }
    }
    }

    Mä painin saman tehtävän kanssa ja just noilla sun ohjeilla yritän mut ei vaan mee läpi. Alkaa usko jo loppua tän tehtävän kanssa. Kaiken lisäksi en ole oikein sisäistänyt String muuttujan olemusta, pitäiskö siis ton rivin

    String sukupuoli = in.readLine();
    //lukee käyttäjän syötteen?//
    char jonon_eka_merkki = sukupuoli.charAt(0);
    //mikä on jonon_eka_merkki ja mistä se tulee?//

    Noiden kahden rivinkö nyt pitäs palauttaa käyttäjän m- tai n-kirjaimet?

    Kiitos vastuksista

    Äänestä

  • what kirjoitti:

    Ja sitten kun katsoo kääntäjän avulla niin se herjaa jokaisesta vertailusta näin:

    Tulostus.java:25: incomparable types: java.lang.String and char

    else if (ika >= 56 && ika < 100 && sukupuoli == 'n')

    Noiden kahden intin ja yhden stringin vertailu ei kyllä tällä mun tyylillä onnistu, inspiraatiota odotellessa. :)

    Käytä kaksinkertaisia lainausmerkkejä. Silloin kaikki ovat tyyppiä String.

    char m = 'm';
    // mutta
    String n = "n";

    Äänestä

  • Javaw kirjoitti:

    Merkkijonojen kanssa ei voi käyttää ==-operaattoria. Sen sijaan täytyy käyttäää equals()-metodia.

    Kiitos! Tämä on ainoa oikea vaihtoehto.)))

    Äänestä

Kommentoi aloitusta


hjälp mig kirjoitti:

Elikkäs Viopessa menossa Javan perusteet -kurssi ja törmäsin ongelmaan. Tässä on tehtävän anto:

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

Vihje:
Käytä riittävästi aikaa ohjelman suunnitteluun, ennen kuin ryhdyt kirjoittamaan ohjelmaa. Käyttäjän syöttämän kirjaimen voit poimia String-muuttujan ensimmäisestä alkiosta.
------------------------------------------------------------------------------------------------------------
Tässä on tämänhetkinen ohjelmani:

import java.io.*;

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

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

try {

System.out.print("Oletko mies vain nainen (m/n)?");
String sukupuoli = in.readLine();

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

switch (sukupuoli)
{
case 'm':

if(ika > 0 && ika < 56)
System.out.println("Olet mies parhaassa iässä!");

else if(ika >= 56 && ika < 101)
System.out.println("Olet täysi-ikäinen.");

else
System.out.println("Ohjelmassa on tapahtunut virhe!");
break;
default:
System.out.println("Ohjelmassa on tapahtunut virhe");
}
} catch(Exception e) {

System.out.print("Antamasi syöte oli virheellinen...");
}
}
}

------------------------------------------------------------------------------------------------------------

Tarkkaan en oikein tiedä mikä mättää, ainakin nuo merkit ovat tuottaneet ongelmia ja viimeisimmän virheen viope näyttää switch() metodin kohdalla. (Olen myös tarkoituksella jättänyt naisen pois sillä yritän nyt saada tätä ensiksi toimimaan). Vuodelta 2006 taisi olla samankaltainen keskustelu josta ei ollut apua.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu