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

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

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

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

Java-kielen perusteita

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

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

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

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

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

7. Näytölle tulostaminen 7.1

Java-kielen perusteet

Java-kielen perusteet

Taulukoiden käsittely Javalla

Java-kielen perusteet

Mitä poikkeuskäsittely tarkoittaa?

Ohjelmoinnin jatkokurssi, kurssikoe

Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2

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

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

Olio-ohjelmointi Javalla

Ohjelmoinnin perusteet Y Python

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely

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

Rajapinta (interface)

Ohjelmoinnin perusteet, kurssikoe

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

Java-kielen perusteita

Taulukot. Jukka Harju, Jukka Juslin

Java-kielen perusteet

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 )

Listarakenne (ArrayList-luokka)

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

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

Ohjelmoinnin perusteet Y Python

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

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Java-kielen perusteita

Poikkeustenkäsittely

Ohjelmoinnin perusteet Y Python

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

Metodien tekeminen Javalla

Harjoitus 3 (viikko 39)

Ohjelmoinnin perusteet Y Python

14. Poikkeukset 14.1

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

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

Ohjelmointi 1 Taulukot ja merkkijonot

14. Poikkeukset 14.1

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

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

Maahan on pudonnut omenoita, ja Uolevi aikoo poimia niitä. Tiedät jokaisesta omenasta, kuinka painava se on.

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

Javan perusteita. Janne Käki

812341A Olio-ohjelmointi, Olio-ohjelmoinnin peruskäsitteet ja Java-kieli

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

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

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

1. Omat operaatiot 1.1

Harjoitustyö: virtuaalikone

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Ohjelmoinnin perusteet Y Python

Ohjelmointityö 3. Mikko Laamanen

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

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

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

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

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

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).

Tietotyypit ja lausekkeet. Lewis & Loftus & Jukka Juslin 1

15. Ohjelmoinnin tekniikkaa 15.1

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3

Ohjelmoinnin perusteet (Java)

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Ohjelmoinnin perusteet Y Python

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

5. HelloWorld-ohjelma 5.1

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmoinnin peruskurssi Y1

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

2. Olio-ohjelmoinista lyhyesti 2.1

Harjoitus 6. Käytä String-luokasta vain charat- ja length-operaatioita.

Ohjelmoinnin perusteet Y Python

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

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

15. Ohjelmoinnin tekniikkaa 15.1

ITKP102 Ohjelmointi 1 (6 op)

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Ohjelmoinnin peruskurssi Y1

Harjoitus 4 (viikko 47)

Ohjelmointi 2 / 2010 Välikoe / 26.3

Tietotyypit ja operaattorit

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

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

Johdatus Ohjelmointiin

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Transkriptio:

Tietojen syöttäminen ohjelmalle Tähän mennessä on käsitelty Javan tulostuslauseet System.out.print ja System.out.println sekä ohjelman perusrakenneosat (muuttujat, vakiot, lauseet). Jotta päästään tekemään todellisia vuorovaikutteisia ohjelmia, on tutustuttava siihen, kuinka ohjelma saadaan ottamaan vastaan käyttäjän syötteitä. Seuraavaksi esitetään kaksi eri tapaa syötteiden vastaanottamiseksi. Näistä kaksi ensimmäistä ovat JDK 5.0:n omia syötteiden lukumekanismeja (Scanner ja BufferedReader) ja kolmas graafiseen dialogiin pohjautuva tapa. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla JDK 5.0:ssa on tietojen lukemista varten olemassa Scanner-luokka. Tästä on kuitenkin muistettava se, että Scanner-luokasta pitää aina muistaa luoda ilmentymä: Scanner syote = new Scanner(System.in); Seuraavassa esimerkissä on toteutettu ohjelma, joka laskee yhteen kaksi käyttäjän syöttämään kokonaislukua. Luvut kysytään järjestyksessä käyttäjältä. Ohjelma laskee niiden summan ja tulostaa tämän jälkeen tuloksen näytölle. Esimerkissä on käytetty kokonaisluvun lukemiseen nextint()-metodia. Scannerluokan metodeja ovat esimerkiksi: int nextint(); double nextdouble(); String next(); String nextline(); // kokonaisluvun lukeminen // liukuluvun lukeminen // merkkijonon lukeminen // kokonaisen rivin lukeminen

Yksittäisen merkin lukemiseksi ei ole omaa metodia. Merkki voidaan lukea merkkijonona. Kutakin näistä metodeista käytetään kuten edellä esimerkissä esitetty nextint()-metodia eli: muuttuja = lukija.next (); Edellä olevissa metodien esittelyissä vastaanottavan muuttujan tyyppi (int, double, String) näkyy metodien nimen edessä (ns. metodin paluuarvon tyyppi). Scanner-luokan käyttämiseksi ohjelman alkuun pitää kirjoittaa import-lause: import java.util.scanner; Kun Scanneria ei enää tarvita, sen voi sulkea close()-metodilla. Tietojen syöttäminen ohjelmalle BufferedReader-luokan avulla JDK 5.0:ssa on tietojen lukemista varten olemassa myös BufferedReader-luokka. Kuten Scannerluokastakin, myös BufferedReader-luokasta pitää aina ensin muistaa luoda ilmentymä: BufferedReader syote = new BufferedReader(new InputStreamReader(System.in)); Seuraavassa esimerkissä on toteutettu ohjelma, joka pyytää käyttäjältä syötteenä merkkijonon ja tulostaa tämän jälkeen käyttäjän syöttämän merkkijonon. Esimerkissä on käytetty merkkijonon lukemiseen readline()-metodia. Tätä metodia käytetään kutsumalla lukijaa metodin kutsun yhteydessä: muuttuja = lukija.readline(); BufferedReader-luokan käyttämiseksi ohjelman alkuun pitää kirjoittaa import-lause: import java.io.*; Käytettäessä BufferedReader-luokkaa on ohjelmassa tutkittava syötevirrasta mahdolliset poikkeukset. Tästä syystä ohjelman runkoon main-metodin yhteyteen on lisättävä poikkeusten tarkistamista varten throws IOException -teksti.

BufferedReaderin avulla voidaan merkkijonojen sijasta lukea myös yksittäisiä merkkejä, kokonaislukuja tai liukulukuja. Koska readline()-metodi kuitenkin lukee koko annetun rivin merkkijonona, on merkkien ja lukujen kohdalla tehtävä tietotyypin vaihdos. Yksittäinen merkki voidaa lukea char.at(0)-metodilla. Tässä luku nolla (0) viittaa indeksin arvoon, eli merkin paikkanumeroon. Tarvittaessa tässä metodissa luku nolla (0) voidaan korvata muulla indeksin arvolla, esimerkiksi charat(2) lukee annetun merkkijonon kolmannen merkin. Lukujen kohdalla merkkitieto voidaan muuttaa halutuksi tietotyypiksi pakotetun tietotyypin muutoksen avulla. Tarpeen mukaan käytetään parseint- tai parsedouble-metodia. Muutkin tietotyypin muutokset ovat mahdollisia, mutta nämä riittävät aluksi. (vrt. graafisten syöttö- ja tulostoimintojen kohdalla tapahtuvia tyyppimuunnoksia) Integer.parseInt merkkijonon muuttaminen int-tyypin kokonaisluvuksi Double.parseDouble merkkijonon muuttaminen double-tyypin liukuluvuksi. Jos merkkijonon muuttaminen ei onnistu siitä syystä, että merkkijonossa on kirjaimia tai jotain muuta vikaa, ohjelma kaatuu virheeseen.

Yksinkertaiset graafiset syöttö- ja tulostustoiminnot Edellä on käsitelty tietojen syöttäminen ja tulostaminen merkkipohjaisesti. Syöttöön käytetään omia syöttörutiineja ja tulostukseen omia System.out.print- ja System.out.println-metodeja. Ohjelmista saadaan helposti graafisia käyttämällä Javan Swing-kirjastoon kuuluvan JoptionPaneluokan syöttö- ja tulostusikkunoita, joita kutsutaan dialogeiksi. Tulostusdialogi Tietojen tulostaminen voidaan tehdä showmessagedialog-metodilla, jota kutsutaan seuraavasti: JoptionPane.showMessageDialog(null, Tulostettava teksti ); Sulkeiden sisään kirjoitetaan tulostettavan tekstin lisäksi esimerkeissämme aina ensiksi null ja pilkku. Tässä null ilmaisee, että sovelluksessa ei ole pääikkunaa. Yksinkertainen ohjelma, joka tulostaa dialogin. Ohjelma tulostaa ikkunan: Graafista ohjelmaa kirjoitettaessa on muistettava seuraavat kaksi seikkaa: 1. Ohjelmatiedoston alkuun ennen luokan nimeä kirjoitetaan import javax.swing.*; jolla sisällytetään ohjelmaan graafinen Swing-kirjasto. 2. Pääohjelma viimeiseksi riviksi kirjoitetaan Syöttödialogi System.exit(0); joka pitää aina kirjoittaa graafisen ohjelman loppuun. Lause vapauttaa ohjelman varaamat resurssit ja lopettaa ohjelman. Tietojen syöttäminen tehdään showinputdialog-metodilla, johon liittyy tiedon kysyminen ja käyttäjän syötteen vastaanottaminen. Metodia kutsutaan seuraavalla tavalla:

String lukustr; int luku; lukustr = JOptionPane.showInputDialog( Anna kokonaisluku : ); luku = Integer.parseInt(lukuStr); Tiedot otetaan vastaan aina String-muuttujan sijoituslauseessa kuten edellä. Merkkitieto pitää muuttaa halutuksi tyypiksi parse-metodeilla. (vrt. tietojen lukeminen BufferedReaderilla) Näitä metodeja on erityyppisille muunnoksille. Alkuun riittävät: Integer.parseInt merkkijonon muuttaminen int-tyypin kokonaisluvuksi Double.parseDouble merkkijonon muuttaminen double-tyypin liukuluvuksi. Jos merkkijonon muuttaminen ei onnistu siitä syystä, että merkkijonossa on kirjaimia tai jotain muuta vikaa, ohjelma kaatuu virheeseen. Huomaa, että graafisia syöttödialogeja käytettäessä ei tarvita erillisiä tulostus- ja syöttölauseita, kuten merkkipohjaista syöttöä ja tulostusta käytettäessä. Seuraava ohjelma pyytää käyttäjältä kokonaislukua ja tulostaa sen. Ohjelman tulostamat dialogit ovat seuraavat: Laajojen ohjelmaprojektien kohdalla nämä syötteiden lukukeinot ovat varsin työläitä ja pitkiä. Tehokkaampaa työskentelyä ja yksinkertaisempaa ohjelmakoodia varten kannattaa syötevirran lukemista varten kirjoittaa oma luokkansa, johon sisällytetään käytettävät lukumetodit. Tämä luokka voidaan toteuttaa esimerkiksi nimellä lue.class. Käyttöä varten tämä luokka pitää kopioida samaan hakemistoon, jossa sitä käyttävät ohjelmat ovat. Ohjelmakoodi yksinkertaistuu tällöin huomattavasti, koska joka kerta ei tarvitse luoda erikseen omaa lukijaa. Tämä mekansimi jätetään kuitenkin tässä kohtaa käsittelemättä.