Eli miten saan palautettua aliohjelman tuotoksia esimerkiksi seuraavanlaisessa tapauksessa:
Aliohjelma:
"laskee lukujen summan ja palauttaa"
Pääohjelma:
summaa = yhteenLasku(a,b)
summaa1= yhteenLasku(a,c)
summaa2= yhteenLasku(b,c)
Eli tietääkseni aliohjelma voi palauttaa vain yhden arvon. Nyt minulla siis lukee aliohjelmassa return summaa;, niin miten saan toimimaan niin että palautaa myös summaa1 ja summaa2?
Aliohjelma:
"laskee lukujen summan ja palauttaa"
Pääohjelma:
summaa = yhteenLasku(a,b)
summaa1= yhteenLasku(a,c)
summaa2= yhteenLasku(b,c)
Eli tietääkseni aliohjelma voi palauttaa vain yhden arvon. Nyt minulla siis lukee aliohjelmassa return summaa;, niin miten saan toimimaan niin että palautaa myös summaa1 ja summaa2?
Vastaukset 3
Vanhimmat
globaaleiksi muuttujiksi.
> miten saan toimimaan niin että palautaa myös
> summaa1 ja summaa2?
Kuten sanoit, metodeista (oikea nimi, ei aliohjelma) voi palauttaa vain yhden arvon. Arvo voi olla perustietotyyppien lisäksi taulukko tai olio. Eli varmaan helpoin ratkaista kyseinen ongelma on palauttaa kaikki luvut taulukossa, esim. näin (jos luvut ovat kokonaislukuja..)
return new int[] { summaa, summaa1, summaa2 };
Tai sitten voi luoda oman luokan, jossa on kolme instanssimuuttujaa. Luot luokasta instanssin, talletat halutut arvot luokan instanssimuuttujiin ja palautat instanssin.
Oletko varma ettet halua metodia
public int yhteenLasku(int a, int b) {
return a b;
}
jolloin sitä voi kutsua vaikka näin:
int summaa, summaa1, summaa2;
summaa = yhteenLasku(a,b);
summaa1= yhteenLasku(a,c);
summaa2= yhteenLasku(b,c);