Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

String-vertailusta ja Scannerin käytöstä (1/2)

Samankaltaiset esitykset


Esitys aiheesta: "String-vertailusta ja Scannerin käytöstä (1/2)"— Esityksen transkriptio:

1 String-vertailusta ja Scannerin käytöstä (1/2)
Vertailuja tehdessä törmätään usein tilanteeseen, jossa merkkijonoa (esimerkiksi merkkijonomuuttujaa) pitää vertailla toiseen merkkijonoon. Tällöin tavanomainen yhtäsuuruusvertailu (==) ei toimi odotetulla tavalla. Sen sijaan on käytettävä String-luokan equals-operaatiota, esimerkiksi: String vastaus = ”Ei”; if (vastaus.equals(”Kyllä”)) {…} ict1td002 - Copyright Raine Kauppinen

2 String-vertailusta ja Scannerin käytöstä (2/2)
Scanner-luokkaa käyttäessä on huomioitava, että luvun lukeminen näppäimistöltä ei poista syötteen lopussa olevaa rivinvaihtomerkkiä, mikä aiheuttaa sen, että jos seuraavaksi luetaan merkkijono, ohjelma näyttää näyttää ”hyppäävän yli” merkkijonon lukemisen. Tämän voi hoitaa lisäämällä numeron luvun jälkeen käskyn syote.nextLine(); joka tyhjentään lukupuskurin, eli poistaa sieltä myös rivinvaihdon (käskyssä syote pitää korvata Scanner luokkaan viittaavan muuttujan nimellä). ict1td002 - Copyright Raine Kauppinen

3 Luentoesimerkki 4.1 Tee ohjelma, joka kysyy käyttäjän iän ja nimen ja tulostaa ne näytölle. Jos käyttäjän nimi on Krister, ohjelma tulostaa näytölle myös tekstin ”Olet opettajan nimikaima!”. Talleta ratkaisusi tiedostoon Henkilotietoja.java. ict1td002 - Copyright Raine Kauppinen

4 4. Metodit ja niiden käyttö
Monimutkaisemmat ohjelmat rakennetaan useista metodeista (ja myöhemmin myös useista luokista). Tämä selkeyttää ohjelman rakennetta, koska eri kokonaisuudet voidaan erotella metodeiksi. Metodien avulla myös yksittäisten kokonaisuuksien toisto ja parametrisointi (toiminnan muuttaminen annettujen arvojen perusteella) on helpompaa. Metodeja on myös helpompi uusiokäyttää kuin kokonaisia ohjelmia. ict1td002 - Copyright Raine Kauppinen

5 Metodien esittely ja kutsuminen (1/2)
Metodi esitellään esittelyrivillä ja sen sisältö seuraa {}-sulkuparin sisällä, esimerkiksi: public void aja() {…} Olemme kirjoittaneet ja/tai käyttäneet jo muitakin metodeita, esimerkiksi main, nextLine, equals, random jne. ovat kaikki metodeita. Metodi nimeltä main esiteltynä kuten olemme tehneet on erikoisasemassa: se mahdollistaa ohjelman (luokan) suorittamisen (Eclipsessä Run As => Java Application). ict1td002 - Copyright Raine Kauppinen

6 Metodien esittely ja kutsuminen (2/2)
Metodin esittelyrivin ensimmäinen määre on metodin näkyvyys: private tarkoittaa metodia, jota voi käyttää vain saman luokan sisältä ja public metodia, jota voi käyttää myös muista luokista. Ennen metodin nimeä määritellään sen paluuarvon tyyppi ja metodin nimen jälkeen suluissa on metodin parametrilista (käsitellään muutaman kalvon jälkeen). Metodia kutsutaan sen nimellä, jolloin ohjelman suoritus siirtyy ko. metodin alkuun ja palaa seuraavalle riville, kun metodin suoritus päättyy. ict1td002 - Copyright Raine Kauppinen

7 Luentoesimerkki 4.2 Tee ohjelma, joka tulostaa kolme kertaa tekstin ”Kokeillaan metodin kutsumista…”. Toteuta ohjelma siten, että siinä on julkinen aja-metodi, joka kutsuu kolme kertaa metodia tulostaTeksti. Metodi tulostaTeksti tulostaa yllä olevan tekstin kerran näytölle. Talleta ratkaisusi tiedostoon MetodiKutsu.java. ict1td002 - Copyright Raine Kauppinen

8 Metodin parametrit ja paluuarvo (1/5)
Metodin toimintaa voidaan ohjata välittämällä sille tietoja. Tätä varten metodille voi välittää parametreja (muuttujia), jotka ovat metodissa käytettävissä ja joilla on alkuarvoina välitetyt arvot. Esimerkiksi seuraavasti esitelty metodi public void laske(double x, double y) {…} saa parametreinaan kaksi desimaalilukua, x:n ja y:n, joiden arvo päätetään metodia kutsuttaessa. ict1td002 - Copyright Raine Kauppinen

9 Metodin parametrit ja paluuarvo (2/5)
Edellä esiteltyä laske-metodia voidaan kutsua esimerkiksi seuraavilla tavoilla: laske(1.2, 3.14); // metodissa x=1.2 ja y=3.14 double a=5.454; double b=12.75; laske(a,b); // metodissa x=5.454 ja y=12.75 Metodin kutsussa annettujen parametrien määrän ja tyyppien on vastattava metodin parametrilistan parametrien määrää ja tyyppejä. ict1td002 - Copyright Raine Kauppinen

10 Metodin parametrit ja paluuarvo (3/5)
Metodi voi myös palauttaa arvon, joka voidaan kutsun yhteydessä esimerkiksi sijoittaa muuttujan arvoksi. Edellä esitellyn laske-metodin esittelyrivillä public void laske(double x, double y) {…} määre void tarkoittaa, ettei metodi palauta arvoa. Jos metodi palauttaa arvon, korvataan määre void sillä tyypillä, jota vastaavan arvon metodi palauttaa, esimerkiksi int, double, boolean, char tai String. ict1td002 - Copyright Raine Kauppinen

11 Metodin parametrit ja paluuarvo (4/5)
Muutetaan laske-metodia siten, että se palauttaa desimaaliluvun: public double laske(double x, double y) {…} Nyt metodin sisällä on huolehdittava siitä, että metodi palauttaa desimaaliluvun. Tämä hoituu lauseella return, joka päättää metodin suorituksen ja palauttaa return-käskyä seuraavan arvon paluuarvona. ict1td002 - Copyright Raine Kauppinen

12 Metodin parametrit ja paluuarvo (5/5)
Metodi laske voi näyttää esimerkiksi seuraavalta: public double laske(double x, double y) { double tulos = x*y; return tulos; } Metodia voidaan kutsua esimerkiksi seuraavasti: double tulo = 0.0; tulo = laske(3.14, 8.0); ict1td002 - Copyright Raine Kauppinen

13 Luentoesimerkki 4.3 Tee ohjelma, joka kysyy käyttäjältä kaksi kokonaislukua ja laskee niiden erotuksen. Tee ohjelmaasi julkinen metodi aja, joka kysyy käyttäjältä luvut, kutsuu metodia laskeErotus ja tulostaa metodin laskeman tuloksen. Metodi laskeErotus saa parametrinaan kaksi kokonaislukua, laskee niiden erotuksen ja palauttaa paluuarvonaan lasketun tuloksen. Talleta ratkaisusi tiedostoon Erotus.java. ict1td002 - Copyright Raine Kauppinen

14 Muuttujien näkyvyys luokan sisällä (1/3)
Aiemmin olemme jo oppineet, että muuttujat pitää aina esitellä ennen kuin niitä käytetään. Muuttujan esittelyn paikka määrää myös muuttujan näkyvyyden. Tähän asti olemme käyttäneet metodissa muuttujia, jotka ovat näkyvissä koko metodissa, koska ne on esitelty metodin alussa. Myös metodin saamat parametrit ovat tällaisia (niillä vain on valmiit alkuarvot). ict1td002 - Copyright Raine Kauppinen

15 Muuttujien näkyvyys luokan sisällä (2/3)
Metodin sisällä muuttuja näkyy siinä rakenteessa, jossa se on esitelty. Metodin alussa esitelty muuttuja näkyy tämän vuoksi koko metodissa. On myös mahdollista esitellä metodin sisällä sen rakenteissa vain rakenteen sisällä näkyviä muuttujia, esimerkiksi while-rakenteen sisällä esitelty muuttuja on käytettävissä vain ko. rakenteessa, muttei sen ulkopuolella (erityisesti ei rakenteen jälkeen!). ict1td002 - Copyright Raine Kauppinen

16 Muuttujien näkyvyys luokan sisällä (3/3)
Muuttujan voi myös esitellä luokan alussa siten, että se ei ole yhdenkään metodin sisällä. Tällaista muuttujaa kutsutaan luokan muuttujaksi ja se on käytettävissä kaikissa luokan metodeissa suoraan. Tiedon välittäminen luokan metodien välillä on siis parametrien lisäksi mahdollista luokkamuuttujilla, mutta niiden käyttämisessä kannattaa olla varovainen. ict1td002 - Copyright Raine Kauppinen

17 Muuttujien näkyvyys luokan sisällä (esimerkki)
public class Muuttujia { int luku1; // luokkamuuttuja public void aja(){ int luku2 = 0; //metodin muuttuja luku1 = 12; while (luku2 < 10){ double luku3 = Math.random(); // luku3 vain whilessa luku1 = luku1*luku1; System.out.println(luku3); luku2++; } System.out.println(luku2+"=>"+luku1); ict1td002 - Copyright Raine Kauppinen

18 Java API Java-ohjelmoijan tärkeä tiedonlähde on Java API (API = Application Programming Interface), jossa kuvataan kaikki Javan tarjoamat valmiit välineet eli luokat. Java API:ssä luokat on ryhmitelty pakkausten ja luokan nimien mukaan, joten jompikumpi näistä on hyvä tietää tietoa etsiessä. API Javan versioon 6.0 löytyy osoitteesta ict1td002 - Copyright Raine Kauppinen

19 Luentoesimerkki 4.4 Tutki Java API:a ja selvitä, onko Scanner-luokassa metodia a) totuusarvon (boolean) lukemiseen, ja b) yksittäisen merkin (char) lukemiseen? ict1td002 - Copyright Raine Kauppinen


Lataa ppt "String-vertailusta ja Scannerin käytöstä (1/2)"

Samankaltaiset esitykset


Iklan oleh Google