apuva

Mikähän tässä ohjelmassa on vikana?

import java.io.*;
public class Tulostus2
{
   public static void main(String[] args)
   {
      String gender;
      int ika;
      BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
      try
      {
         System.out.print("Oletko mies vai nainen (m/n)?");
         String gender = in.readLine();  
         System.out.print("Anna ikäsi: ");
         ika = Integer.parseInt(in.readLine());
         switch(gender)
         {
            case m:
              {
               if(ika >= o && ika = 56 && = 0 && = 56 &&
5536
Äänestä

Muut lukivat myös

Vastaukset 5

Vanhimmat

Ihan kuin mulla olis ollut joskus ekalla Java-kurssilla sama tehtävä... Vai onko joku muu kysynyt tuosta tehtävästä aiemminkin?

Kysyessä kannattais varmaan ensin vähän selittää mitä haluaisi ohjelman tekevän ja millainen ongelma sen kanssa on tullut. "Mikähän tässä ohjelmassa on vikana?" on aika kehno kysymys, harva jaksaa käydä kovin tarkkaan koodia läpi, ilman vinkkiä mitä pitäisi etsiä.

Tuosta vois kuitenkin olla apua;
http://java.sun.com/docs/books/tutorial/java/nutsandbolts/switch.html

String ei ole alkeistyyppi vaan ihan olio.

Vinkkinä vois antaa semmoisenkin, että tulosta poikkeus näkyviin pelkän virheilmoituksen sijaan.

System.out.println("Ohjelmassa tapahtunut virhe: " e);

Äänestä
  • "String ei ole alkeistyyppi vaan ihan olio. "

    Niinhän se onkin. Ihan oikein sitä on silti tuossa käytetty.

    Hyvä tapa ois kuitenkin alustaa ne muuttujat

    String gender = null;
    int ika = 0;

    Nyt se gender-muuttuja on jo olemassa, niin ei kande luoda sisemmässä lohkossa uutta saman nimistä muuttujaa. Ei varmaan ole tarkoitus, että on kaksi saman nimistä eri lohkoissa voimassa olevaa muuttujaa

    ei siis näin

    "
    String gender = "male";

    if(blaablaa)
    {
    String gender = in.jotainjotain...
    }
    "
    vaan

    "
    String gender = "male";

    if(blaablaa)
    {
    gender = in.jotainjotain...
    }
    "

    tossa ekassa iffissä on O-kirjain eikä nolla

    if(ika >= o && ika

    Äänestä

  • Piru_ kirjoitti:

    "String ei ole alkeistyyppi vaan ihan olio. "

    Niinhän se onkin. Ihan oikein sitä on silti tuossa käytetty.

    Hyvä tapa ois kuitenkin alustaa ne muuttujat

    String gender = null;
    int ika = 0;

    Nyt se gender-muuttuja on jo olemassa, niin ei kande luoda sisemmässä lohkossa uutta saman nimistä muuttujaa. Ei varmaan ole tarkoitus, että on kaksi saman nimistä eri lohkoissa voimassa olevaa muuttujaa

    ei siis näin

    "
    String gender = "male";

    if(blaablaa)
    {
    String gender = in.jotainjotain...
    }
    "
    vaan

    "
    String gender = "male";

    if(blaablaa)
    {
    gender = in.jotainjotain...
    }
    "

    tossa ekassa iffissä on O-kirjain eikä nolla

    if(ika >= o && ika

    "A switch works with the byte, short, char, and int primitive data types. It also works with enumerated types (discussed in Classes and Inheritance) and a few special classes that "wrap" certain primitive types: Character, Byte, Short, and Integer (discussed in Simple Data Objects )."

    Eli String ei pelaa suoraan switchissä.

    Äänestä

Tuossa yllä jo mainittujen lisäksi esiintyy kahdesti seuraava virheellinen iffi:

else if(ika >= 56 &&

Äänestä

Paljon kiitoksia ja halaus viitseliäille auttajille. Onnistuin korjaamaan kaikki virheeni.

Äänestä

Kommentoi aloitusta


mikä mättää kirjoitti:

Mikähän tässä ohjelmassa on vikana?

import java.io.*;
public class Tulostus2
{
   public static void main(String[] args)
   {
      String gender;
      int ika;
      BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
      try
      {
         System.out.print("Oletko mies vai nainen (m/n)?");
         String gender = in.readLine();  
         System.out.print("Anna ikäsi: ");
         ika = Integer.parseInt(in.readLine());
         switch(gender)
         {
            case m:
              {
               if(ika >= o && ika = 56 && = 0 && = 56 &&

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