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



Samankaltaiset tiedostot
Java-kielen perusteita

Java-kielen perusteet

Listarakenne (ArrayList-luokka)

Metodien tekeminen Javalla

Java-kielen perusteita

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

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

Mitä poikkeuskäsittely tarkoittaa?

Java-kielen perusteet

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

Java-kielen perusteet

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

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

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

Ohjelmoinnin perusteet Y Python

Rajapinta (interface)

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

7. Näytölle tulostaminen 7.1

public static void main (String [] args)

YHTEYSSUHDE (assosiation)

Olio-ohjelmointi Javalla

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

Luokan muodostimet (Constructors)

Lista luokan sisällä

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

Taulukoiden käsittely Javalla

Java-kielen perusteita

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

Ohjelmoinnin perusteet Y Python

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

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

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

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

17. Javan omat luokat 17.1

Ohjelmoinnin perusteet Y Python

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

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

20. Javan omat luokat 20.1

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

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

Ehto- ja toistolauseet

Ohjelmointiharjoituksia Arduino-ympäristössä

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 )

Java-kielen perusteet

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin jatkokurssi, kurssikoe

Merkkijonon tutkiminen matches-metodilla

11. Javan valintarakenteet 11.1

Merkkien ja merkkijonojen käsittelyä Javalla

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

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

Ohjelmoinnin perusteet, kurssikoe

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

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

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

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

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

Periytyminen (inheritance)

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

Metodien tekeminen Javalla

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

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

Taulukot. Jukka Harju, Jukka Juslin

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

5. HelloWorld-ohjelma 5.1

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Ohjelmoinnin peruskurssi Y1

Harjoitus 2 (viikko 45)

Tietotyypit ja lausekkeet. Lewis & Loftus & Jukka Juslin 1

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

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

Mikä yhteyssuhde on?

17. Javan omat luokat 17.1

13. Loogiset operaatiot 13.1

Ohjelmoinnin peruskurssi Y1

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

Ohjelmoinnin perusteet Y Python

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

ITKP102 Ohjelmointi 1 (6 op)

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

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

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

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Ohjelmointi 1 Taulukot ja merkkijonot

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

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

1 Tehtävän kuvaus ja analysointi

Ehto- ja toistolauseet

Poikkeustenkäsittely

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

Transkriptio:

1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri on muistialue, johon menevät käyttäjän kuvaruudulle kirjoittamat merkit, kun käyttäjä painaa enter-näppäintä. Enter-näppäimen painallus vie näppäimistöltä painetun tekstin syöttöpuskuriin. Ohjelma saa käyttöönsä syöttöpuskurin esimerkiksi Scanner-luokan avulla. Syöttöpuskuriin liittyy indeksi, joka kertoo, minkä merkin ohjelma seuraavaksi lukee. Kun ohjelmassa pyydetään käyttäjältä tietoa ensimmäisen kerran, syöttöpuskurin indeksi osoittaa puskurin ensimmäistä merkkiä. Kun ohjelma lukee puskurin viimeisen merkin eli enter-näppäimen painalluksesta puskuriin menneen rivinvaihtomerkin, syöttöpuskuri on tyhjä. Esimerkki Ohjelma tulostaa käyttäjälle seuraavaa: Anna henkilön etunimi ja sukunimi: Käyttäjä kirjoittaa tekstin: Tarmo Manninen ja painaa enter-näppäintä Nyt syöttöpuskurin sisältö on: Tarmo Manninen\n Indeksi osoittaa kirjainta T Viimeinen mekki, \n on rivinvaihtomerkki eli enter Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: String etunimi, sukunimi; // lukemiseen tarvittava olio System.out.print( Anna henkilön etunimi ja sukunimi: ); etunimi = input.next(); sukunimi = input.next(); ohjelman toiminta: etunimi : Tarmo sukunimi: Manninen Nyt syöttöpuskurin sisältö on: \n Indeksi osoittaa rivinvaihtomerkkiä

2 (7) Scanner-luokka Kun tietoa luetaan syöttöpuskurista, on lukijan päätettävä, milloin tieto on luettu eli mikä on tietojen välinen erotinmerkki syöttöpuskurissa. Scanner-luokan erotinmerkki on oletusarvoisesti tyhjämerkki (whitespace). Tyhjämerkki tarkoittaa välilyöntiä, tabulointimerkkiä ja enter-painallusta eli rivinvaihtoa. Oletusarvoa voidaan muuttaa usedelimeter-metodilla. Kun Scanner-luokkaa käytetään, se on ilmoitettava kääntäjälle seuraavasti: import java.util.scanner;. Muodostin: public Scanner ( File source ) muodostimelle kerrotaan, mistä tiedostosta halutaan lukea (File source) kun halutaan lukea näppäimistöltä, muodostimen kutsussa parametrina on System.in Esimerkki Scanner input; input = new Scanner (System.in); tai Scanner-muodostimen parametri System.in määrittää sen, että olio lukee syötteitä näppäimistöltä Kokonaisluvun lukeminen: public int nextint() palauttaa arvonaan syöttöpuskurista seuraavana olevan kokonaisluvun nextint-metodi ohittaa kaikki tyhjät (välilyönnit, tabuloinnit ja rivinvaihdot) kunnes vastaan tulee numero tai muu merkki kuin tyhjä 1) jos syöttöpurkurissa on seuraavana numero, metodi lukee numerot, kunnes vastaan tulee tyhjä tai jokin muu merkki kuin numero, ja muodostaa lukemistaan numeroista kokonaisluvun, jonka palauttaa arvonaan 2) jos syöttöpuskurissa on seuraava merkki muu kuin tyhjä tai numero, tapahtuu ajoaikainen poikkeus (virhe) 3) jos syöttöpuskuri on tyhjä tai siellä ei ole muuta kuin tyhjää, nextint-metodi ohittaa kaikki tyhjät ja jää odottamaan puskurin täyttymistä. Esimerkki: int luku; System.out.print( Anna kokonaisluku: ); luku = input.nextint();

3 (7) Desimaaliluvun lukeminen: Scanner-luokka tutkii tietokoneen näppäimistön asetuksista kumpaa desimaaliluvun desimaalierotinta käytetään, desimaalipistettä vai desimaalipilkkua. Kun näppäimistömme on asetettu Suomen kielelle sopivaksi, desimaalierotin on desimaalipilkku, kuitenkin kun Java-ohjelmasta tulostetaan desimaaliluku, se tulostuu desimaalipisteellä. Tämä on ristiriita. Ristiriita voidaan korjata, kutsumalla Scanner-luokan metodia: public Scanner uselocale ( Locale locale ) Esimerkki Muutetaan desimaalierotin desimaalipisteeksi. import java.util.locale; // ota käyttöön Locale-luokka input.uselocale ( Locale.US ); Scanner-luokan metodit desimaaliluvun lukemiseen: public double nextdouble() public float nextfloat() palauttaa arvonaan syöttöpuskurista seuraavana olevan desimaaliluvun metodi ohittaa kaikki tyhjät (välilyönnit, tabuloinnit ja rivinvaihdot) kunnes vastaan tulee numero, desimaalierotin tai muu merkki kuin tyhjä 1) jos syöttöpuskurissa on seuraavana numero, metodi lukee numerot. Jos seuraava merkki on desimaalierotin, metodi lukee sen ja jatkaa numeroiden lukemista, kunnes vastaan tulee tyhjä tai jokin muu merkki kuin numero, ja muodostaa lukemistaan numeroista desimaaliluvun, jonka palauttaa arvonaan 2) jos syöttöpuskurin seuraava merkki on desimaalierotin, metodi odottaa, että seuraava merkki on numero. Jos se on, metodi jatkaa numeroiden lukemista, kunnes vastaan tulee muu merkki kuin numero, ja muodostaa lukemastaan reaaliluvun, jonka palauttaa arvonaan. Jos taas desimaalierotinta ei seuraa numero, tapahtuu ajoaikainen poikkeus (virhe) 3) jos syöttöpuskurissa on seuraava merkki muu kuin tyhjä tai numero, tapahtuu ajoaikainen poikkeus (virhe) 4) jos syöttöpuskuri on tyhjä tai siellä ei ole muuta kuin tyhjää, metodi ohittaa kaikki tyhjät ja jää odottamaan puskurin täyttymistä

4 (7) Esimerkki: double luku; System.out.print( Anna desimaaliluku: ); luku = input.nextdouble(); Boolean-arvon lukeminen: public boolean nextboolean() palauttaa arvonaan totuusarvon true tai false jos syöttöpuskurissa on seuraavana sana true tai false, jota seuraa vähintään yksi tyhjä (välilyönti, tabulointi, rivinvaihto), metodi palauttaa arvonaan ko. boolean arvon, jos kuitenkin puskurissa ei ole em. arvoja tai em. sanan jälkeen ei ole tyhjää, tapahtuu ajoaikainen poikkeus (virhe). Esimerkki: boolean totuus; System.out.print( Kerro totuus (true/false): ); totuus = input.nextboolean(); Sanan (merkkijonon, joka ei sisällä välilyöntejä) lukeminen: public String next() palauttaa arvonaan syöttöpuskurista löytyvän ensimmäisen sanan, joka päättyy tyhjään (välilyönti, tabulointi, rivinvaihto) metodi ohittaa puskurin alusta tyhjät, kunnes löytää merkin, joka ei ole tyhjä. Tämän jälkeen se lukee merkkejä, kunnes vastaan tulee tyhjä, jota se ei lue, eli syöttöpuskurin indeksi jää osoittamaan luetusta sanasta seuraavaa tyhjää merkkiä. Esimerkki: String sana; System.out.print( Anna sana: ); sana = input.next();

5 (7) Rivin (merkkijonon, joka sisältää välilyöntejä) lukeminen: public String nextline() palauttaa arvonaan syöttöpuskurin koko sisällön metodi lukee merkkejä syöttöpuskurin indeksistä alkaen rivinvaihtomerkkiin ja sijoittaa lukemansa String-olioon, jonka palauttaa arvonaan. Metodi lukee rivinvaihtomerkin, mutta ei vie sitä paluuolioon. Esimerkki: String rivi; System.out.print( Anna lause: ); rivi = input.nextline(); Toiminta: Ohjelma tulostaa: Anna Lause: Käyttäjä kirjoittaa: Tama on lause, joka sisaltaa valilyonteja. rivi: Tama on lause, joka sisaltaa valilyonteja. Syöttöpuskurin tutkiminen ilman lukemista public boolean hasnextint() tutkii, onko seuraava luettava kokonaisluku, ja palauttaa arvonaan true-arvon, jos on public boolean hasnextdouble() public boolean hasnextfloat() tutkii, onko seuraava luettava desimaaliluku, ja palauttaa arvonaan true-arvon, jos on public boolean hasnextboolean() tutkii, onko seuraava luettava boolean arvo true tai false, ja palauttaa arvonaan true-arvon, jos on public boolean hasnextline() tutkii, onko syöttöpuskurissa merkkijono, joka päättyy rivinvaihtomerkkiin, ja palauttaa arvonaan true-arvon, jos on

6 (7) Esimerkki: Seuraavassa on Esimerkki1-sovellusluokka, joka suorittaa käyttäjän antaman operaation. Ohjelma pyytää käyttäjältä operaation: +, -, *, / tai %. Tämän jälkeen se pyytää kaksi desimaalilukua, jonka jälkeen se laskee operaation tuloksen em. desimaaliluvuilla. Ohjelman toiminta päättyy, kun käyttäjä antaa operaation arvoksi välilyönnin. import java.util.scanner ; // ota Scanner-luokka käyttöön import java.util.locale; // ota Locale-luokka käyttöön class Esimerkki1 // ATTRIBUUTIT private Scanner input; private char operaatio; // operaatio private double luku1, luku2; // operandit // METODIT /** Metodi, joka sisältää ohjelman logiikan. * Metodi pyytää käyttäjältä operaation ja sille operandit * ja tulostaa operaation tuloksen. * Metodin toiminta päättyy, kun käyttäjä antaa operandiksi * tyhjan merkin. **/ public void aja() input = new Scanner (System.in) ; // scanner-olion luonti input.uselocale ( Locale.US); // muuta desimaalierotin pyydaoperaatio(); // pyydä operaatio käyttäjältä while (operaatio!= ' ') laske(); // suorita operaatio pyydaoperaatio(); // pyyda operaatio käyttäjältä System.out.println("\n\n***LOPPU***"); // end of aja /** Metodi pyytää käyttäjältä operaation attribuuttiin operaatio. * Jos käyttäjä painaa vain enteria, operaation arvoksi tulee '?', muuten käyttäjän antama merkki. **/ private void pyydaoperaatio() String oper; System.out.println ("Anna operaattori +, -, *, / tai %, tyhja lopettaa") ; oper = input.nextline(); // lue operaatio if (oper.length()!= 0) // antoiko kayttaja merkin? operaatio = oper.charat(0); // ota Stringin 1. merkki else operaatio = '?'; // end of pyydaoperaatio

7 (7) /** Metodi suorittaa käyttäjän antaman operaation. * Metodi pyytää käyttäjältä operandit, mikäli operaatio on * kunnollinen eli +.-.*./ tai %. **/ private void laske() switch (operaatio) case '+': System.out.println (luku1 + "+" + luku2 +" = " + (luku1 + luku2)) ; case '-': System.out.println (luku1 + "-" + luku2 +" = " + (luku1 - luku2)) ; case '*': System.out.println (luku1 + "*" + luku2 +" = " + (luku1 * luku2)) ; case '/': if (luku2 == 0) System.out.println( 0:lla jako ei onnistu ); else System.out.println (luku1 + "/" + luku2 +" = " + (luku1 / luku2)) ; case '%': System.out.println (luku1 + "%" + luku2 +" = " + (luku1 % luku2)) ; default: System.out.println ("Väärä operaattori "+operaatio) ; /** Metodi pyytaa käyttäjältä kaksi lukua attribuutteihin luku1 ja luku2 **/ private void pyydaluvut() System.out.println ("Anna luku") ; luku1 = input.nextdouble() ; System.out.println ("Anna luku") ; luku2 = input.nextdouble() ; input.nextline(); // ohita loput syöttöpuskurista public static void main (String [] args) Esimerkki1 olio = new Esimerkki1(); olio.aja(); // end of class