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



Samankaltaiset tiedostot
2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

Metodien tekeminen Javalla

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Metodien tekeminen Javalla

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Java-kielen perusteet

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

1. Omat operaatiot 1.1

Merkkien ja merkkijonojen käsittelyä Javalla

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Olio-ohjelmointi Javalla

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Java-kielen perusteet

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

17. Javan omat luokat 17.1

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Java-kielen perusteet

17. Javan omat luokat 17.1

Java-kielen perusteita

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Taulukot. Jukka Harju, Jukka Juslin

Listarakenne (ArrayList-luokka)

8. Näppäimistöltä lukeminen 8.1

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Ta

12. Näppäimistöltä lukeminen 12.1

8. Näppäimistöltä lukeminen 8.1

Sisältö. 22. Taulukot. Yleistä. Yleistä

7/20: Paketti kasassa ensimmäistä kertaa

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

ITKP102 Ohjelmointi 1 (6 op)

Sisältö. 2. Taulukot. Yleistä. Yleistä

Java-kielen perusteita

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

7. Näytölle tulostaminen 7.1

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai )

16. Javan omat luokat 16.1

Java kahdessa tunnissa. Jyry Suvilehto

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Ohjelmoinnin perusteet Y Python

ITKP102 Ohjelmointi 1 (6 op)

Rajapinta (interface)

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Lisää segmenttipuusta

19. Olio-ohjelmointia Javalla 19.1

4. Luokan testaus ja käyttö olion kautta 4.1

Javan GUI Scratchaajalle

Javan perusteita. Janne Käki

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

7. Oliot ja viitteet 7.1

OHJ-1151 Ohjelmointi IIe

Sisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Muuttujat ja kontrolli. Ville Sundberg

9. Periytyminen Javassa 9.1

Luokat ja oliot. Ville Sundberg

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

ITKP102 Ohjelmointi 1 (6 op)

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

9. Periytyminen Javassa 9.1

Taulukot. Taulukon käsittely. Tämän osan sisältö. Esimerkki. Taulukon esittely ja luonti. Taulukon alustaminen. Taulukon koko

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki

Osion kaksi kertaus. Jukka Juslin. Jukka Juslin

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

2. Olio-ohjelmoinista lyhyesti 2.1

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Java-API, rajapinnat, poikkeukset, UML,...

14. Poikkeukset 14.1

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Java-kielen perusteita

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Lauseet. Ehdollinen lause. Tämän osan sisältö. Ehdollinen lause. Esimerkkejä. Yksinkertainen ehto. Lohkosulut ja sisennys. Ehdollinen lause if

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

13. Loogiset operaatiot 13.1

Mikä yhteyssuhde on?

Taulukoiden käsittely Javalla

Ohjelmointi 2, välikoe

Ohjelmoinnin perusteet (Java)

4. Olio-ohjelmoinista lyhyesti 4.1

Ohjelmoinnin jatkokurssi, kurssikoe

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Ohjelmoinnin perusteet Y Python

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Standardi- ja tietorakenneluokkia

Luokan muodostimet (Constructors)

Transkriptio:

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 equalsoperaatiota, esimerkiksi: String vastaus = Ei ; if (vastaus.equals( Kyllä )) { 1 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ä). 2 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. 3 1

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. 4 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). 5 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. 6 2

Luentoesimerkki 4.2 Tee ohjelma, joka tulostaa kolme kertaa tekstin Kokeillaan metodin kutsumista. Toteuta ohjelma siten, että siinä on julkinen aja-metodi, jokakutsuu kutsuu kolme kertaa metodia tulostateksti. Metodi tulostateksti tulostaa yllä olevan tekstin kerran näytölle. Talleta ratkaisusi tiedostoon MetodiKutsu.java. 7 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. 8 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ä. 9 3

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. 10 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. 11 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); 12 4

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. 13 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). 14 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!). 15 5

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. 16 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); 17 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 http://java.sun.com/javase/6/docs/api/ 18 6

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