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
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
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.
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.
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.
"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.
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.
Siellä on niitä ToString metodeja BinaryToString yms. en muista tarkkaan. Mutta sitten on myös parsedouble jolla saat käännettyä doublen luettavaksi.
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.
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);
}