Merkkien ja merkkijonojen käsittelyä Javalla

Samankaltaiset tiedostot
Metodien tekeminen Javalla

Java-kielen perusteet

Metodien tekeminen Javalla

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

Merkkijonon tutkiminen matches-metodilla

Taulukoiden käsittely Javalla

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

Java-kielen perusteita

Listarakenne (ArrayList-luokka)

Java-kielen perusteita

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

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

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

20. Javan omat luokat 20.1

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

YHTEYSSUHDE (assosiation)

17. Javan omat luokat 17.1

Ohjelmoinnin perusteet Y Python

Lista luokan sisällä

Java-kielen perusteet

Java-kielen perusteet

Periytyminen (inheritance)

Mikä yhteyssuhde on?

Olio-ohjelmointi Javalla

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

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

11. Javan valintarakenteet 11.1

7. Näytölle tulostaminen 7.1

Rajapinta (interface)

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

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

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

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 )

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

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

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

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

Luokan muodostimet (Constructors)

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

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

Ohjelmointi Tunnilla 1 (5) Viikko 7 tuntitehtäviä: metodien tekeminen Javalla

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

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

public static void main (String [] args)

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

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

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

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

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

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

Poikkeustenkäsittely

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

Java kahdessa tunnissa. Jyry Suvilehto

17. Javan omat luokat 17.1

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

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

KOHDELUOKAN MÄÄRITTELY

11. Javan valintarakenteet 11.1

Mitä poikkeuskäsittely tarkoittaa?

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

Java-kielen perusteita

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

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

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

Yksikkötestaus. Kattava testaus. Moduulitestaus. Ohjelman testaus. yksikkotestaus/ Seija Lahtinen

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Ohjelmoinnin jatkokurssi, kurssikoe

Luokan sisällä on lista

16. Javan omat luokat 16.1

Ohjelmoinnin perusteet Y Python

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

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

1. Omat operaatiot 1.1

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

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

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

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

Ohjelmoinnin perusteet, kurssikoe

14. Poikkeukset 14.1

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

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

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

ITKP102 Ohjelmointi 1 (6 op)

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

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

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

Ehto- ja toistolauseet

Javan GUI Scratchaajalle

Taulukot. Jukka Harju, Jukka Juslin

Ohjelmointiharjoituksia Arduino-ympäristössä

Ohjelmointi 2, välikoe

7. Oliot ja viitteet 7.1

14. Poikkeukset 14.1

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen

Luokat ja oliot. Ville Sundberg

Rinnakkaisohjelmointi, Syksy 2006

Vahva koostumussuhde (Composition)

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

Ohjelmoinnin perusteet, 1. välikoe

OHJELMOINTITEKNIIKKA

Transkriptio:

1 Merkkien ja merkkijonojen käsittelyä Javalla char String Merkkijonon lukeminen käyttäjältä String-luokan metodeja matches-metodi ja esimerkkejä säännöllisistä lausekkeista (engl. regular expressions) 1 char char on tietotyyppi, jota käytetään yhden merkin käsittelyyn char kirjain = 'k'; Merkkejä vertaillaan operaattoreilla (!=, ==) if (kirjain == 'k') { 2

2 String String luokan avulla käsitellään merkkijonoja. Luokasta voidaan luoda muuttujia ja vakioita. String teksti, nayttaminen; final String OTSIKKO = "Ohjelmointi Javalla"; Merkkijonojen käsittelyyn käytetään String-luokan metodeja Merkkijonoja ei vertailla operaattorella (==,!=, >, <). Merkkijonojen vertailuun käytetään metodia if (nayttaminen.equals("pienellä")) tai if (nayttaminen.equalsignorecase("pienellä")) merkkijono, jota vertaillaan vertailumetodi merkkijono, johon vertaillaan 3 public static void main(string[] args) { String teksti, nayttaminen; Scanner input = new Scanner(System.in); Tee ohjelma, jolla voidaan valita, näytetäänkö annettu teksti suurilla vai pienillä kirjaimilla. System.out.print("Kirjoita teksti: "); teksti = input.nextline(); System.out.print("Näytetäänkä suurella vai pienellä: "); nayttaminen = input.nextline(); if (nayttaminen.equals("pienellä")) { teksti = teksti.tolowercase(); else if (nayttaminen.equals("suurella")) { teksti = teksti.touppercase(); System.out.println("Teksti on " + teksti); verrataan, onko merkkijono sama kuin "pienellä" muunnetaan merkkijono pienellä tai suurella kirjoitetuksi 4

3 Merkkijonon lukeminen käyttäjältä Luetaan syöttöpuskurista käyttäjän antama merkkijono String nimi; Scanner input = new Scanner(System.in); System.out.print("Anna nimesi: "); nimi = input.nextline(); Luetaan konsolista koko rivi merkkejä ja rivinvaihto String etunimi, sukunimi; Scanner input = new Scanner(System.in); System.out.print("Anna etu- ja sukunimesi: "); etunimi = input.next(); sukunimi = input.nextline(); Luetaan konsolista yksi sana Luetaan konsolista toinen sana ja rivinvaihto Luetaan syöttöpuskurista luku ja sen jälkeen merkkijono nextlinemetodilla nextint, nextdouble, next jättävät syöttöpuskuriin rivinvaihdon jos syöttöpuskursita ei lueta rivinvaihtoa pois, nextline-metodilla luetusta merkkijonosta tulee tyhjä, sillä nextline lopettaa lukemisen rivinvaihtoon int ika; String nimi; Scanner input = new Scanner(System.in); System.out.print("Anna ikäsi: "); ika = input.nextint(); input.nextline(); System.out.print("Anna nimesi: "); nimi = input.nextline(); Ratkaisu: otetaan konsoliin jäänyt rivinvaihto pois 6

4 String-luokan metodeja mitä metodi palauttaa metodin nimi metodin parametrit eli mitä metodille viedään tietona boolean equals(string str) Vertailee kahta merkkijonoa. Isot ja pienet kirjaimet ovat merkitseviä. String vastaus; if (vastaus.equals("kyllä")) => tutkitaan, onko vastaus-muuttujan sisältönä "kyllä, isot ja pienet kirjaimet ovat merkitseviä merkkijono, mille metodia kutsutaan metodin nimi metodin parametri (teksti "kyllä") 7 boolean equalsignorecase(string str) String trim() int length() Vertailee kahta merkkijonoa. Isot ja pienet kirjaimet eivät ole merkitseviä. String vastaus; if (vastaus.equalsignorecase("kyllä")) => tutkitaan, onko vastaus-muuttujan sisältönä "kyllä, isot ja pienet kirjaimet eivät ole merkitseviä Poistaa tyhjät merkit merkkijonon alusta ja lopusta. String nimi = " Matti "; nimi = nimi.trim(); => nimi-muuttujan sisällöksi tulee "Matti" Palauttaa merkkijonon pituuden. String otsikko = "Merkkijono"; int pituus = otsikko.length(); => otsikko-muuttujan sisältönä olevien merkkien määrä => pituus-muuttujan arvoksi tulee 10

5 String touppercase() String tolowerecase() char charat(int index) int indexof(string str) Muuntaa merkkijonon suurella kirjoitetuksi. String nimi = "matti"; nimi = nimi.touppercase(); => nimi-muuttujan sisällöksi tulee "MATTI" Muuntaa merkkijonon pienellä kirjoitetuksi. nimi = nimi.tolowercase(); => nimi-muuttujan sisällöksi tulee "matti" Paluttaa index-kohdassa olevan merkin. Ensimmäinen merkki on indeksillä 0. String nimi = "matti"; char eka = nimi.charat(0); => eka-muuttujan sisällöksi tulee 'm' Palauttaa parametrina olevan merkkijonon alkamisen merkkijonossa tai -1, jos merkkijonoa ei ole. Ensimmäinen merkki on indeksillä 0. String teksti = "Opi Javaa"; int paikka = teksti.indexof("java"); => paikka on 4, koska teksti "Java" alkaa kohdasta 4 tekstissä "Opi Javaa" paikka = teksti.indexof("c++"); => paikka on -1, koska tekstiä "C++" ei ole merkkijonossa "Opi Javaa" int indexof(string str, int alku) String substring(int alku) String substring(int alku, int loppu) Palauttaa parametrina olevan merkkijonon alkamisen merkkijonossa tai -1, jos merkkijonoa ei ole. Merkkijonoa etsitään parametrina annetusta alkukohdasta lähtien. String teksti = "Opi Javaa"; int paikka = teksti.indexof("java", 5); => paikka on -1, koska kohdasta 5 lähtien ei ole tekstiä "Java. Kohdasta 5 lähtien on teksti "avaa" Palauttaa osamerkkijonon kohdasta alku lähtien. String osa = teksti.substring(4); => osa on "Javaa" Palauttaa osamerkkijonon kohdasta alku lähtien kohtaan loppu-1 saakka String osa = teksti.substring(4,6); => osa on "Ja" 10

6 matches-metodi ja esimerkkejä säännöllisistä lausekkeista matches-metodia käytetään merkkijonon sisällön tutkimiseen. Sillä voidaan tarkastaa, että merkkijono on halutun sisältöinen esim. merkkijono vastaa hetua, päivämäärää tai lukua. boolean matches(string regular_expression) Palauttaa true, jos merkkijono noudattaa annettua säännöllistä lauseketta ja false, jos ei noudata. String hetu = "2412190-123C"; if (hetu.matches("\\d{6[a+-]\\d{3[a-z0-9]")) => Yllä palauttaa true, sillä hetu merkkijono noudattaa matches-metodille annettua sääntöä Malli Esimerkki Käyttöesim. \d{1,3 21 ikä \d{1,10(\.\d{2)? 12.95 hinta [A-ZÅÄÖa-zåäö-]{2,30 Helsinki paikkakunta \d{2\.\d{2\.\d{4 24.12.1990 päivämäärä \d{6[a+-]\d{3[a-z0-9] 241290-123A hetu! matches metodissa kauttaviivojen eteen \ eli \d => \\d 11 Malleja Malli \d Numero \D Muu kuin numero \w Kirjain, numero tai alaviiva \W Muu kuin kirjain, numero tai alaviiva \s White space (eli välilyönti, rivinvaihto tai tabulaattori) \S Muu kuin white space a Merkki a. Mikä tahansa merkki paitsi ei rivinvaihto [] Mikä tahansa hakasulkujen sisällä oleva merkki [^] Merkki, joka ei kuulu hakasulkujen sisällä olevaan merkkijoukkoon 12

7 Lukumääriä Malli * 0-n + 1-n? 0-1 {n {n, {,m {n,m Tasan n Vähintään n Korkeintaan m Vähintään n, korkeintaan m Vaihtoehto () Ryhmittely \ Merkin erikoismerkityksen poisto esim. \. tarkoittaa pistettä,. tarkoittaa mitä tahansa merkkiä 13 Ohjelma kysyy käyttäjältä päivämäärän muodossa kk-pp-vvvv. Jos päivämäärä on oikeaa muotoa, se muunnetaan muotoon pp.kk.vvvv. System.out.print("Anna päivämäärä muodossa kk-pp-vvvv: "); String paivamaara = input.nextline(); tutkitaan, onko annettu päivämäärä haluttua muotoa if (paivamaara.matches("\\d{2-\\d{2-\\d{4")) { String kk = paivamaara.substring(0, 2); String pp = paivamaara.substring(3, 5); String vv = paivamaara.substring(6); otetaan merkkijonosta osamerkkijonoja System.out.println("Päivämäärä on suomalaisessa muodossa " + pp + "." + kk + "." + vv); else { System.out.println("Päivämäärä ei ole muotoa kk-pp-vvvv"); 14