Java-apuja kaivataan

Moikkelis!

Kaipaisin apua ohjelmointitehtävään, kielenä on java. Miten tulostan String-tyyppisessä metodissa double-tyyppisen arvon, kun tyyppimuunnosta ei näköjään kääntäjä hyväksy.

Koodinpätkästä esimerkki:


public String tulostaJotakin() {
   double luku;
   
   if (this.luku < this.luku2)
    luku = luku2;
   else luku = luku3;

   return luku;
}


Ja kääntäjä siis valittaa tuttuun tapaan

incompatible types
found: java.lang.String
required: double


Kiitoksia jos joku vaivautuu vastaamaan!

:) Maria
10702
Äänestä

Muut lukivat myös

Vastaukset 10

Vanhimmat

1) funktio on String tyyppinen mutta palauttaa doublen.

2) luku2 ja luku3, onko ne globaaleja muuttujia? Ei ole määritelty funktiossa.

3) mihin "this" viittaa?

( 4) miksi funktiolla nimi tulostaJotain, jos se tosiasiassa tekee jonkun suuruusvertailun ja palauttaa jonkun luvun)

Nää on vaan tällasia yleisiä havaintoja, en tosiaan osaa javaa paljoakaan.

Äänestä
  • 1) Kysymys oli juurikin, että miten tämä onnistuu.

    2) Luokkamuuttujia. ks. 3)

    3) this viittaa olioon itseensä ja näin ollen this.luku viittaa olion sisäiseen muuttujaan luku.

    Äänestä

ei siis takerruta noihin pikkuseikkoihin ja jos siis haluat tuon metodin toimimaan, eli ongelma on siinä että tuo public String tulostaJotakin() siis ns. sanoo että pitäisi palauttaa string no siis helpoin tapa saada mistä tahansa lukuarvosta string on seuraavanlainen.

String apu=""; //eli siis tyhjä string
apu = apu luku;

tuo siis selkeyden vuoksi on välttämätön tuo lainausmerkkien käyttö tuossa koska siis silloin alustetaan ns. nollan pituinen string johon katenoidaan tuo luku. Jos tämä oli se mitä hait niin toivottavasti auttoi.

Äänestä
  • "ei siis takerruta noihin pikkuseikkoihin"

    Eli nämä pikkuseikat voi unohtaa. Eli voi unohtaa myös sen että ohjelman pitäisi toimia.

    En tiedä miten sinä ongit tuon olennaisimman tuosta täysin toimimattomasta koodista, mutta täytyy myöntää että jos tuo on se mitä kysyjä halusi tietää, niin en ole kykenevä vastaamaan enää ikinä yhteenkään kysymykseen. En ymmärrä tällaisia kysymyksiä joissa olennaisin on piilotettu.

    Äänestä

  • huttunen kirjoitti:

    "ei siis takerruta noihin pikkuseikkoihin"

    Eli nämä pikkuseikat voi unohtaa. Eli voi unohtaa myös sen että ohjelman pitäisi toimia.

    En tiedä miten sinä ongit tuon olennaisimman tuosta täysin toimimattomasta koodista, mutta täytyy myöntää että jos tuo on se mitä kysyjä halusi tietää, niin en ole kykenevä vastaamaan enää ikinä yhteenkään kysymykseen. En ymmärrä tällaisia kysymyksiä joissa olennaisin on piilotettu.

    pitää nyt joka asiasta alkaa vääntämään, siis nuo muuttuja määrittelyt, noh. Ehkä se koodin kirjoittaja on määritellyt ne jo paljon aikaisemmin koodissa, no tosin se double luku ei alustu missään vaiheessa ennenkuin siihen viitataan niin se heittää sitten object may not have been initialized poikkeuksen, mutta siis kysymys kai lähinnä koski tuota kääntäjän antamaa erroria ja ymmärtääkseni siihen jo selitinkin vastauksen. En nähnyt järkeä lähteä pohtimaan kaikkia niitä motiiveja ja tarkoituksia tuosta metodista ja että mihin sitä käytetään ja että miksi sen nimi on tulostaJotakin vaikkei se tulostakkaan jne. Yksi ongelma saatin ratkaistua, sittenpähän pääsee taas vähän eteenpäin ja ehkä osaa itse jo ratkaista seuraavia ongelmia.

    Äänestä

  • Leksa kirjoitti:

    pitää nyt joka asiasta alkaa vääntämään, siis nuo muuttuja määrittelyt, noh. Ehkä se koodin kirjoittaja on määritellyt ne jo paljon aikaisemmin koodissa, no tosin se double luku ei alustu missään vaiheessa ennenkuin siihen viitataan niin se heittää sitten object may not have been initialized poikkeuksen, mutta siis kysymys kai lähinnä koski tuota kääntäjän antamaa erroria ja ymmärtääkseni siihen jo selitinkin vastauksen. En nähnyt järkeä lähteä pohtimaan kaikkia niitä motiiveja ja tarkoituksia tuosta metodista ja että mihin sitä käytetään ja että miksi sen nimi on tulostaJotakin vaikkei se tulostakkaan jne. Yksi ongelma saatin ratkaistua, sittenpähän pääsee taas vähän eteenpäin ja ehkä osaa itse jo ratkaista seuraavia ongelmia.

    String-luokassa ole valmiit metodit tuota varten?
    Ainakin siellä on aika monelle tyypille valueOf() metodit.

    return String.valueOf(apu);

    Äänestä

  • Piru kirjoitti:

    String-luokassa ole valmiit metodit tuota varten?
    Ainakin siellä on aika monelle tyypille valueOf() metodit.

    return String.valueOf(apu);

    Pitääkö tästä Stringgien katenointiasiasta vääntää aina kilometrien pituisia kädenvääntökilpailuja jokaisella nettisaitilla.

    Kaunis,eipäs,joopas,olioepäpuhtaus jne...

    Ei sotketa aloittelevia ohjelmoijia ihan lopullisesti. Antaa nyt jengin oppia ensin edes alkeet.

    Äänestä

Siellä on niitä ToString metodeja BinaryToString yms. en muista tarkkaan. Mutta sitten on myös parsedouble jolla saat käännettyä doublen luettavaksi.

Äänestä
  • no siis kun nyt aletaan noista String luokan metodeista puhumaan niin tässä on nyt linkki suoraan API kuvauksen String luokkaan ja jokainen nyt voi sitten katsoa mitä sieltä löytyy ja mitä ei.

    http://java.sun.com/j2se/1.4.1/docs/api/java/lang/String.html


    Siis doublessako toString metodi?? siis ei alkeistyyppi doublessa tietääkseni taida paljoa noita ole vaan siis Double oliossa on noita metodeja.

    Äänestä

elikkästen tarvittaisiin cast:aus tuosta double tyypistä String tyyppin...
String-luokkahan tarjoaa ihan pirusti näitä valueOf()-metodeita, joilla kykenee suurimman osan castauksista tekemään(ei toki kaikkia)

public String tulostaJotakin() {
double luku;
if (this.luku < this.luku2)
luku = luku2;
else luku = luku3;
// eli nyt sitte cast
return String.valueOf(luku);
}

Äänestä

Kommentoi aloitusta


Maria83 kirjoitti:

Moikkelis!

Kaipaisin apua ohjelmointitehtävään, kielenä on java. Miten tulostan String-tyyppisessä metodissa double-tyyppisen arvon, kun tyyppimuunnosta ei näköjään kääntäjä hyväksy.

Koodinpätkästä esimerkki:


public String tulostaJotakin() {
   double luku;
   
   if (this.luku < this.luku2)
    luku = luku2;
   else luku = luku3;

   return luku;
}


Ja kääntäjä siis valittaa tuttuun tapaan

incompatible types
found: java.lang.String
required: double


Kiitoksia jos joku vaivautuu vastaamaan!

:) Maria

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