1 Metodien tekeminen Javalla Mikä metodi on? Metodin syntaksi Metodi ja sen kutsuminen Parametreista Merkkijonot ja metodi Taulukot ja metodi 1 Mikä metodi on? Metodilla toteutetaan luokkaan toiminnallisuutta. Metodi on koodipätkä, joka suorittaa jonkin tehtävän. String nimi = "Javaa helposti "; int pituus = nimi.length(); int length() String luokkaan koodattu metodi, joka kertoo merkkijonon pituuden Ohjelmassa voidaan käyttää muiden tekemiä tai itse tehtyjä metodeja. 2
2 Metodin syntaksi metodi palauttaa tiedon return-lauseella näkyvyys tyyppi metodinnimi (tyyppi param1, tyyppi param2) lauseita; return arvo; parametreilla metodiin tuodaan tietoa metodin ulkopuolelta näkyvyys void metodinnimi (tyyppi param1, tyyppi param2) lauseita; metodi ei palauta mitään, metodissa ei ole return-lausetta metodin näkyvyys muille luokille public metodi näkyy kaikille luokille private metodi näkyy vain kyseisen luokan metodeille puuttuu metodi näkyy samassa paketissa oleville luokille 3 Metodi ja sen kutsuminen public class AsunnonMyynti { public double kysymyyntihinta() { metodi palauttaa tiedon Tee ohjelma, joka kysyy asunnon myyntihinnan ja laskee asunnon myynnistä maksettavan välityspalkkion. metodi ottaa vastaan tiedon (parametrin) public double laskepalkkio(double myyntihinta) { public static void main(string[] args) { AsunnonMyynti ohjelma = new Ohjelma(); double myyntihinta, palkkio; myyntihinta = ohjelma.kysymyyntihinta(); palkkio = ohjelma.laskepalkkio(myyntihinta); DecimalFormat f = new DecimalFormat("0.00"); kutsutaan metodia System.out.println("Summa on " + f.format(summa)); metodille välitetään tieto eli parametri luodaan luokasta olio, jolla voidaan kutsua metodia 4
3 Tee metodi, joka kysyy asunnon myyntihinnan. metodi palauttaa desimaaliuvun public double kysymyyntihinta() { metodin paikalliset double myyntihinta; muuttujat ovat olemassa Scanner input = new Scanner(System.in); vain metodin suoritusajan System.out.print("Anna asunnon myyntihinta: "); myyntihinta = input.nextdouble(); return myyntihinta; metodi palauttaa return-lauseella metodista ulos desimaaliluvun myyntihinta = ohjelma.kysymyyntihinta(); 5 metodin palauttaa return-lauseella desimaaliluvun Metodi saa metodin ulkopuolelta desimaaliluvun, eli metodille tulee parametrina desimaaliluku public double laskepalkkio(double myyntihinta) { final double PALKKIO = 3.44; final double MINPALKKIO = 2214-00; double palkkio = myyntihinta * (PALKKIO / 100.0); if (palkkio < MINPALKKIO) { palkkio = MINPALKKIO; return palkkio; Tee metodi, joka laskee asunnon myyntihinnasta maksettavan välityspalkkion. Välityspalkkion on 3,44% myyntihinnasta ja minimissään 2214 euroa. palkkio = ohjelma.laskepalkkio(myyntihinta); metodille välitettävä parametri 6
4 public class PienellaSuurella { metodi palauttaa merkkijonon public String kysyteksti(string kehote) { metodi ei palauttaa mitään Metodi ja merkkijono metodi ottaa vastaan merkkijonon Tee ohjelma, jolla voidaan valita, näytetäänkö annettu teksti suurilla vai pienillä kirjaimilla. metodi ottaa vastaan kaksi merkkijonoa public void naytateksti(string teksti, String nayttaminen){ public static void main(string[] args) { PienellaSuurella ohjelma = new PienellaSuurella(); String teksti, nayttaminen; teksti = ohjelma.kysyteksti("kirjoita teksti: "); nayttaminen = ohjelma.kysyteksti("suurella vai pienellä: ") ohjelma.naytateksti(teksti, nayttaminen); 7 Metodi kysyy ja palauttaa merkkijonon. Parametrina annetaan teksti, mikä näytetään käyttäjälle, ennen syötteen lukemista. metodi palauttaa merkkijonon metodi saa parametrina merkkijonon public String kysyteksti(string kehote) { Scanner input = new Scanner(System.in); System.out.print(kehote); String teksti = input.nextline(); return teksti; metodi palauttaa return-lauseella metodista ulos merkkijonon teksti = ohjelma.kysyteksti("kirjoita teksti: "); metodille välitettävä parametri 8
5 metodi ei palauta mitään, koska metodin tyyppi on void Metodi näyttää annetun merkkijono suurella tai pienellä kirjoitettuna. Ensimmäinen parametri on näytettävä merkkijono ja toinen parametri kertoo, näytetäänkö teksti suurella vai pienellä. metodi ottaa vastaan kaksi parametria public void naytateksti(string teksti, String nayttaminen) { final String PIENELLA = "pienellä", SUURELLA = "suurella"; if (nayttaminen.equals(pienella)) { teksti = teksti.tolowercase(); else if (nayttaminen.equals(suurella)) { teksti = teksti.touppercase(); System.out.println("Teksti on " + teksti); Ohjelma.naytaTeksti(teksti, nayttaminen); metodille välitetään kaksi parametria 9 Parametreista Metodi ei voi muuttaa parametria, jos se on perustietotyyppiä (int, double, boolean, char) tai String. Metodi kopioi itselleen kutsussa olleen parametrin arvon, joten metodi käyttää kopiota parametrista. Metodi muuttaa siis kopiota ei kutsussa ollutta parametria. Metodi voi muuttaa parametria, jos se on taulukko tai olio. Metodi voi muuttaa taulukoita, joissa on lukuja ja merkkijonoja. Metodi voi muuttaa taulukkoa, koska metodiin välitetään taulukon viite eli tieto, missä taulukko on muistissa. 10
6 Metodi ja taulukko Tee ohjelma, joka kysyy lottorivin. public class Kayttajanlotto { metodi ottaa public void kysylotto(int [] numerot, int lkm) { vastaan taulukon public void naytalotto(int [] numerot, int lkm) { public static void main(string[] args) { Kayttajanlotto ohjelma 0 new Kayttajanlotto(); int[] numerot; int lkm; Scanner input = new Scanner(System.in); System.out.print("Montako numeroa annat (7-10): "); lkm = input.nextint(); numerot = new int[lkm]; ohjelma.kysylotto(numerot, lkm); ohjelma.naytalotto(numerot, lkm); metodille välitetään parametrina taulukko 11 Metodi kysyy lottonumerot. Ensimmäinen parametri on taulukko, mihin numerot kysytään. Toinen parametri kertoo, montako numeroa kysytään. metodi ei palauta mitään, koska metodin tyyppi on void taulukko voidaan viedä parametrina, koska metodi pystyy muuttamaan taulukkoa (oliota) public void kysylotto(int [] numerot, int lkm) { int numero; Scanner input = new Scanner(System.in); for (int i = 0; i < lkm; i++) { System.out.print("Anna " + (i+1) + " lottonumerosi: "); numero = input.nextint(); numerot[i] = numero; ohjelma.kysylotto (numerot, lkm); metodille välitetään parametrina taulukko 12
7 Metodi näyttää annetun lottorivin. Ensimmäinen parametri on taulukko, missä lottonumerot on. Toinen parametri kertoo, montako numeroa taulukossa on. public void naytalotto(int [] numerot, int lkm) { Arrays.sort(numerot, 0, lkm); System.out.print("Rivisi oli "); for (int i = 0; i < lkm; i++) { System.out.print(numerot[i] + " "); ohjelma.naytalotto (numerot, lkm); metodille välitetään parametrina taulukko 13