8. Näppäimistöltä lukeminen

Slides:



Advertisements
Samankaltaiset esitykset
Tuloksellinen Java-ohjelmointi Luku 3 Luokkien käyttäminen
Advertisements

© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
© 2004 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice Java-perusteet Kari Kujansuu
Jukka Juslin Poikkeukset ja niiden paikallistaminen * Jukka Juslin * Liittyy oppikirjan lukuun 11.
Taulukot: Array Taulukko Javassa pitää aina perustaa (new)
Ohjelmointitaito (ict1td002, 12 op) Syksy 2008
13. Pakkaukset.
Näytölle tulostaminen. 7.2 Sisällys System.out.println - ja System.out.print -operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Yksinkertaiset graafiset syöttö- ja tulostustoiminnot.
© Jukka Harju, Jukka Juslin Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 9 Poikkeuskäsittely.
Poikkeustenkäsittely  Mitä poikkeustenkäsittely tarkoittaa?  Poikkeuksen käsitteleminen  Poikkeusluokkien hierarkia  Poikkeuksen heittäminen 1.
Toiston tekeminen Javalla  Mikä toistorakenne on?  while toistorakenne  do-while toistorakenne  for toistorakenne 1.
© Jukka Harju, Jukka Juslin
7. Oliot ja viitteet.
String-vertailusta ja Scannerin käytöstä (1/2)
20. Javan omat luokat.
Kuinka niitä käsitellään
1 DataOutputStream ja DataInputStream DataOutputStream:lla voidaan tallentaa perustietotyyppien arvoja binäärimuotoiseen tiedostoon DataInputStream:lla.
HelloWorld-ohjelma. 5.2 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi.
5. Kapselointi Yleistä Kapseloinnilla (encapsulation) tarkoitetaan luokan tietojen ja toimintojen pakkaamista yhdeksi suojatuksi kokonaisuudeksi.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Näppäimistöltä lukeminen Sisällys Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä. In -luokka.
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen
@ Leena Lahtinen TIETOKONEOHJELMAN RAKENNE OHJELMALLA ON KAKSI OSAA:  MÄÄRITYSOSA TIETOJEN KUVAUKSIA VARTEN  SUORITUSOSA TIETOJEN KÄSITTELYÄ.
2. Lisää Java-ohjelmoinnin alkeita
Tiedostojen käsittely
Javan oliovirrat eli oliotiedostojen käsittely. Olio- eli objektitiedostojen käsittely Käsittely täysin samanlaista kuin muiden tiedostojen 1.Otetaan.
14. Poikkeukset Sisällys Johdanto poikkeuksiin. Poikkeusten käsittely: − Poikkeusten käsittely paikallisesti. − Poikkeusten heittäminen. Exception.
Tiedostot. 8.2 Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen.
Olio-ohjelmoinista lyhyesti. 2.2 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen.
Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö.
String-vertailusta ja Scannerin käytöstä (1/2)
17. Kooste.
5. Kapselointi.
6. Metodit.
3. Olio-ohjelmoinista lyhyesti
6. Tiedostot.
1. Omat operaatiot.
7. Oliot ja viitteet.
13. Pakkaukset.
Poikkeustenkäsittelylohkot try-catch
14. Poikkeukset.
Kuinka niitä käsitellään
17. Javan omat luokat.
4. Komentoriviparametrit
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
15. Lohkot.
5. HelloWorld-ohjelma.
7. Näytölle tulostaminen
8. Näppäimistöltä lukeminen
Kuinka niitä käsitellään
9. Aritmeettiset operaatiot
11. Javan valintarakenteet
12. Javan toistorakenteet
15. Lohkot.
12. Javan toistorakenteet
3. Komentoriviparametrit
13. Pakkaukset.
4. Attribuutit.
15. Ohjelmoinnin tekniikkaa
7. Hyvä ohjelmointitapa..
14. Poikkeukset.
7. Näytölle tulostaminen
5. HelloWorld-ohjelma.
12. Javan toistorakenteet
14. Poikkeukset.
13. Pakkaukset.
4. Luokan testaus ja käyttö olion kautta
eli oliotiedostojen käsittely
Esityksen transkriptio:

8. Näppäimistöltä lukeminen

Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka.

Yleistä Näppäimistöltä annettujen arvojen (syötteiden) lukeminen on periaatteessa helppoa: Lukuoperaation kohdatessaan ohjelman jää odottamaan käyttäjän syötettä. Näppäimistöltä annettu syöte lähetetään ohjelmalle Enter-näppäintä painamalla. Ohjelman suoritus jatkuu syötteen lähetyksen jälkeen. Ongelma: lukuoperaatio odottaa saavansa tietyn tyyppisen arvon, mutta ohjelman käyttäjä voi antaa syötteeksi jotain muuta tyyppiä olevan arvon. Esimerkiksi ollaan lukemassa kokonaislukua ja käyttäjä syöttää syystä tai toisesta ohjelmalle liukuluvun.

Yleistä Jos lukuoperaatio ei pysty muuttamaan syötettä halutun tyyppiseksi, tapahtuu ajonaikainen virhe (runtime error). Ajonaikainen virhe pysäyttää ohjelman suorituksen, ellei siihen ole varauduttu lukuoperaation yhteydessä. Lisävaikeuksia aiheuttaa itse Java-kieli, jossa tietojen vakavampi lukeminen näppäimistöltä vaatii olio-ohjelmointia ja ajonaikaisten virheiden käsittelyä. Laki 1 ja laki 2 -kursseilla asiat pyritään pitämään yksinkertaisina ja syötteiden lukemiseen käytetään pääasiassa omatekoista In-luokkaa, jonka operaatioihin virheidenkäsittely on koodattu valmiiksi.

In-luokka Luokka sisältää operaatiot: readInt() int-tyyppisen kokonaisluvun lukemiseen readDouble() double-tyyppisen liukuluvun lukemiseen readString() merkkijonon (String) lukemiseen ja readChar() merkin (char) lukemiseen. Nämä operaatiot eivät luovuta helpolla: lukemista jatketaan kunnes on saatu kelvollinen syöte. Luokka löytyy kurssin kotisivuilta.

In-luokka Operaatioita kutsutaan pistenotaatiolla, joka on tuttu jo tulostamisen yhteydessä. Lukuoperaation palauttama arvo sijoitetaan usein muuttujaan, jotta arvoa voidaan käyttää myöhemmin. Muuttujan ja operaation tyyppien on oltava yhteensopivia. // Muuntaja-ohjelma löytyy kurssin kotisivuilta. … double jaardit; // Luetaan käyttäjältä syöte ja tallennetaan se muuttujaan. jaardit = In.readDouble();

In-luokka, käännös ja tulkinta In-luokka on käännettävä yhdessä oman ohjelman (luokan) kanssa. Tämä on tehtävissä eri tavoin. Helpointa on kopioida luokka samaan hakemistoon kuin oman ohjelma, jolloin käännettäessä In-luokka kääntyy ilman lisätoimia. Esimerkki: javac Muuntaja.java Näin käännetty ohjelma on ajettavissa tutulla komennolla: java Muuntaja In-luokan voi ottaa käyttöön ohjelmaa käännettäessä ja ajettaessa myös jostakin muusta hakemistosta.

In-luokka, käännös ja tulkinta Oletetaan esimerkiksi, että In-luokan lähdekoodi löytyy Windows-käyttöjärjestelmässä Muuntaja-ohjelman sisältävän hakemiston ylihakemistosta. Tällöin ohjelma voidaan kääntää vaihtoehtoisesti komennoilla: javac Muuntaja.java ..\In.java (Linux ja Mac: javac Muuntaja.java ../In.java) tai javac -sourcepath .. Muuntaja.java ja suorittaa komennolla: java -classpath .;.. Muuntaja (Linux ja Mac: java -classpath .:.. Muuntaja)

Scanner-luokka Javan oma luokka syötteiden lukuun. In-luokka hyödyntää Scanner-luokkaa. Otettava käyttöön import-lauseella. Sujuva käyttö edellyttää olio-ohjelmoinnin tuntemusta. Omassa ohjelmassa syötevirtaan tulee liittää vain yksi Scanner-olio. Try-catch-lausetta ei tarvita peruskäytössä. // Otetaan Scanner-luokka käyttöön import-lauseella. import java.util.*; public class ScannerDemo { public static void main(String[] args) { // Liitetään Scanner-olio oletussyötevirtaan. Scanner lukija = new Scanner(System.in); // Yritetään lukea kokonaisluku. try { System.out.print("Anna luku: "); int luku = lukija.nextInt(); } // Jos tapahtui virhe, niin se "siepataan" tänne. catch (Exception e) { System.out.println("Tapahtui virhe: " + e); // Suljetaan. lukija.close();