Ehto- ja toistolauseet

Samankaltaiset tiedostot
Ehto- ja toistolauseet

Java-kielen perusteita

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

13. Loogiset operaatiot 13.1

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1

11. Javan toistorakenteet 11.1

11. Javan valintarakenteet 11.1

13. Loogiset operaatiot 13.1

Java-kielen perusteet

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

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

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

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

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

Java-kielen perusteet

Muuttujat ja kontrolli. Ville Sundberg

Olio-ohjelmointi Javalla

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

public static void main (String [] args)

Ohjelmointiharjoituksia Arduino-ympäristössä

Listarakenne (ArrayList-luokka)

11. Javan valintarakenteet 11.1

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten

16. Ohjelmoinnin tekniikkaa 16.1

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

16. Ohjelmoinnin tekniikkaa 16.1

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin

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

ITKP102 Ohjelmointi 1 (6 op)

7. Näytölle tulostaminen 7.1

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

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

Rajapinta (interface)

Lista luokan sisällä

Metodien tekeminen Javalla

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

Luokan muodostimet (Constructors)

Java-kielen perusteita

5/20: Algoritmirakenteita III

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

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

Sisällys. 15. Lohkot. Lohkot. Lohkot

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

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

14. Poikkeukset 14.1

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

Javan perusteita. Janne Käki

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

14. Poikkeukset 14.1

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

Java-kielen perusteita

Mikä yhteyssuhde on?

YHTEYSSUHDE (assosiation)

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

Taulukot. Jukka Harju, Jukka Juslin

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

Periytyminen (inheritance)

Ohjelmoinnin perusteet Y Python

Java kahdessa tunnissa. Jyry Suvilehto

Python-ohjelmointi Harjoitus 2

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 )

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

Luokan sisällä on lista

ITKP102 Ohjelmointi 1 (6 op)

Poikkeustenkäsittely

Ohjausrakenteet. Valinta:

Ohjelmoinnin perusteet, kurssikoe

Sisällys JAVA-OHJELMOINTI Osa 3: Laskennan ohjaus. Lohkolause (block) Peräkkäinen laskenta. Lohkon käyttö. Esimerkki

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Palautetta viime luennosta

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

7. Oliot ja viitteet 7.1

1. Omat operaatiot 1.1

Javan GUI Scratchaajalle

1 Tehtävän kuvaus ja analysointi

Taulukoiden käsittely Javalla

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

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

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

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Ohjelmointi 2 / 2010 Välikoe / 26.3

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

5. HelloWorld-ohjelma 5.1

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

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

Luokat ja oliot. Ville Sundberg

Luento 5. Timo Savola. 28. huhtikuuta 2006

Ohjelmoinnin perusteet Y Python

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Python-ohjelmointi Harjoitus 5

9. Periytyminen Javassa 9.1

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

Sisällys. 16. Lohkot. Lohkot. Lohkot

KOHDELUOKAN MÄÄRITTELY

811120P Diskreetit rakenteet

ITKP102 Ohjelmointi 1 (6 op)

Transkriptio:

Ehto- ja toistolauseet 1

Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden toistamisen useammin kuin kerran (silmukassa) Kirjassa nämä sijaitsevat luvussa 4: 4.2 Ehtolauseet 4.3 Toistolauseet 4.4. Ehto- ja toistolause -esimerkki 2

Missä ollaan? if-ehtolause Muut ehtolauseet while-lause Muut toistolauseet 3

Kontrollivirta Lauseiden suoritusjärjestys metodin sisällä on oletusarvoisesti lineaarinen (ylhäältä alas). Tällaista suoritusjärjestystä kutsutaan peräkkäisrakenteeksi. Ehto- ja toistolauseet mahdollistavat valinnan suoritetaanko ohjelmalohko vai ei ja kuinka monta kertaa. Valinnat perustuvat totuusarvoisiin (boolean) lausekkeisiin (eli ehtoihin), jotka saavat aina arvon true tai false. Lauseiden suoritusjärjestystä kutsutaan kontrollivirraksi (flow of control). 4

Ehtolauseet Ehtolause mahdollistaa valinnan suoritetaanko ehtoon liittyvä ohjelmalohko. Ehtolauseita kutsutaan myös valintalauseiksi (selection statements). Javan ehtolauseet ovat: if-lause if-else lause if - else if -lause switch-lause. 5

if-lause if-lauseella on seuraava syntaksi: if on Javan varattu sana ehto on boolean-lauseke, joka saa aina arvon tosi (true) tai epätosi (false) if( ehto ) { lause1; lause2; Jos ehto on tosi, suoritetaan if-lauseeseen liittyvä ohjelmalohko. Jos ehto on epätosi, Ohjelmalohko jätetään suorittamatta. 6

if-lauseen logiikka ehdon evaluointi true false ohjelmalohko 7

Vertailuoperaattorit Ehtolauseet käyttävät Javan vertailuoperaattoreita, jotka kaikki palauttavat arvon tosi tai epätosi: == yhtäsuuri kuin (matematiikan =)!= erisuuri kuin < pienempi kuin > Suurempi kuin <= pienempi- tai yhtäsuuri kuin >= suurempi- tai yhtäsuuri kuin Huomaa ero yhtäsuuruusoperaattorin (==) ja sijoitusoperaattorin välillä (=)! 8

if-lause Esimerkki if-lauseesta: if (saldo < 0) { System.out.println ( Tilillä ei ole katetta! ); System.out.println( Valmis. ); Ensin tutkitaan ehto :saldo-muuttuja on joko pienempi kuin nolla tai ei. Jos ehto on tosi, if-lauseeseen liittyvä ohjelmalohko suoritetaan jos näin ei ole, lohko ohitetaan. Oli tilanne kumpi tahansa, seuraavaksi tulostetaan merkkijono Valmis. Katso myös kirjan esimerkki 4.1. 9

if-lause Mitä seuraavat lauseet tekevät? if (ylaraja <= 0) { ylaraja = 0; Sijoittaa muuttujaan ylaraja arvon nolla, jos muuttujan tämänhetkinen arvo on pienempi tai yhtäsuuri kuin nolla. if (saldo!= otot + panot) { tilivirhe = true; Sijoittaa muuttujaan tilivirhe arvon true, jos saldomuuttujan arvo ei ole sama kuin otot- ja panot-muuttujien summa. Aritmeettiset operaatiot suoritetaan ennen yhtäsuuruus- ja vertailuoperaatioita. Sulkujen käyttö asian selventämiseksi on kuitenkin aina suositeltavaa! 10

Loogiset operaattorit Ehtolausekkeet voivat käyttää myös seuraavia loogisia operaattoreita:! NOT (EI) && AND (JA) OR (TAI) Nämä kaikki ottavat vastaan boolean-lausekkeita operandeina ja palauttavat joko arvon tosi (true) tai epätosi (false). Looginen EI on unaarinen operaattori (toimii yhden operandin kanssa). Loogiset JA ja looginen TAI ovat binäärisiä operaattoreita (toimivat kahden operandin kanssa). 11

Looginen NOT NOT-operaatiota kutsutaan myös negaatioksi tai komplementiksi. Jos operandi a on tosi, silloin!a (NOT a) on epätosi. Jos operandi a on epätosi, silloin!a on tosi. Tämä voidaan esittää totuusarvotaulukon avulla seuraavasti: a!a true false false true 12

Looginen AND ja looginen OR Looginen AND (JA) lauseke a && b on tosi, jos sekä a että b ovat tosia, muutoin lauseke on epätosi Looginen OR (TAI) ilmaisu a b on tosi, jos a on tosi tai b on tosi tai molemmat ovat tosia, muutoin lauseke on epätosi (eli silloin kun a ja b ovat molemmat epätosia) 13

Loogiset operaattorit Loogisia operaattoreita käyttäen saadaan aikaiseksi turhankin monimutkaisia lausekkeita. if (saldo > otto + 500 &&!tilivirhe) { System.out.println ( Rahat riittävät. ); Sulkujen käyttö suoritusjärjestyksen selventämiseksi on aina suositeltavaa! 14

Loogiset operaattorit Totuusarvotaulukosta nähdään kaikki mahdolliset tilanteet esimerkiksi kahden operandin tilanteessa Koska && ja kummallakin on kaksi operandia, on olemassa neljä mahdollista kombinaatiota kullakin ehdolla a ja b a b a && b a b true true true true true false false true false true false true false false false false 15

Totuusarvotaulukko Minkä tahansa monimutkaisemmankin lausekkeen voi evaluoida totuusarvotaulukon avulla. saldo > otto + 500 tilivirhe!tilivirhe saldo > otto + 500 &&!tilivirhe true true false false true false true true false true false false false false true false 16

Laiska evaluointi AND- ja OR-operaattorien prosessointi on laiskaa. Jos vasen operandi riittää ratkaisemaan lopputuloksen, oikeaa operandia ei huomioida ollenkaan if (nimi!= null && nimi.equals( Bill )) { System.out.println ( Terve Bill!"); Tästä on hyötyä esim. edellisessä tilanteessa: ohjelma ei kaadu vaikka merkkijonon nimi arvo olisi null. 17

Missä ollaan? if-ehtolause Muut ehtolauseet while-lause Muut toistolauseet 18

if-else -lause else-lause lisätään if-lauseeseen, kun halutaan epätosi vaihtoehdolle erillinen käsittely: if ( ehto ) { lause1; else { lause2; Jos ehto on tosi (true), lause1 (lohko 1) suoritetaan; jos ehto on epätosi, lause2 (lohko2) suoritetaan. Ensimmäinen tai toinen suoritetaan, mutta ei molempia Katso myös kirjan esimerkki 4.2. 19

if-else lauseen logiikka ehto evaluoidaan true false lause1 lause2 20

if - else -esimerkki If else-if lausetta tarvitaan esimerkiksi set-metodien validiteetti tarkistuksissa. Miksi validiteettitarkistuksia tarvitaan? Esimerkki: Luokassa Oppilas (kirja s.43) on attribuutti private String etunimi; Toteutetaan aluksi yksinkertaisin mahdollinen set-metodi (jonka myös Eclipse osaa generoida): public void setetunimi(string etunimi) { this.etunimi = etunimi; 21

if - else -esimerkki Metodi täyttää tärkeimmän tehtävänsä, eli luokan ulkopuolelta saadaan tallennettua olion attribuuttiin haluttua tietoa esimerkiksi seuraavasti: Oppilas oppilas1 = new Oppilas(); oppilas1.setetunimi("ville"); Kysymys: Mitä tapahtuu, mikäli set-metodia kutsutaan esimerkiksi seuraavilla arvoilla? oppilas1.setetunimi(""); oppilas1.setetunimi(null); 22

if - else -esimerkki Edellä toteutettu pelkästään suoran sijoituksen sisältävä set-metodi alkaa lähestyä seuraavaa tilannetta: Mikäli olion kapselointi rikottaisiin määrittelemällä attribuutti suojatun private-tyypin sijaan suoraan public-tyyppisenä eli julkisena (älä koskaan tee näin!), olisi mahdollista tehdä luokan ulkopuolelta suoria sijoituksia: oppilas1.etunimi=null; vrt. oppilas1.setetunimi(null); Ero on em. kapseloinnin rikkomiseen on lähinnä siinä, että suoran sijoituksen sijaan tulee tietoisesti kutsua set-metodia. Suora sijoitus on helpompi kirjoittaa "vahingossa", public-tyyppiseksi muunto lisäisi virhealttiutta entisestään. Haluamme kuitenkin ohjelmamme toimivan aina oikein, joten set-metodin tulee hylätä virheelliset arvot! Ratkaisu tähän ovat validiteettitarkistukset. 23

if - else -esimerkki Edellä olevassa tilanteessa etunimeksi eivät kelpaa ainakaan null eikä tyhjä merkkijono. Saadaan seuraavanlainen validiteettitarkistukset sisältävä set-metodi. public void setetunimi(string etunimi) { if(etunimi!= null && etunimi.length() > 0) { this.etunimi = etunimi; else { System.out.println("Etunimi ei saa olla tyhjä!); Tämän jälkeen set metodia on hyödynnettävä muualla koodissa, jotta duplikaattikoodilta vältytään. Esimerkiksi parametrillisessa kontruktorissa tulee suoran sijoitukset this.etunimi = etunimi sijaan kutsua set-metodia: setetunimi(etunimi). 24

if - else -esimerkki Edellä esitelty tapa toteuttaa validiteettitarkistukset riittää meille toistaiseksi. Todellisuudessa esiintyy kuitenkin seuraavia eroja edelliseen: Virheilmoituksia ei tulosteta suoraan konsolille vaan lokitiedostoon esimerkiksi paketin java.util.logging avulla (katso kirjan luokka TiedostoTyokalut s. 74). JavaBeaneja käyttävissä sovelluskehyksissä (esim. Struts) validiteettitarkistukset saatetaan toteuttaa set-metodien sijaan omaan erilliseen metodiinsa (esim. ActionForm-luokassa metodissa nimeltä validate). 25

if - else-if -lauseet If else-if on rakenne, jossa voidaan ottaa huomioon useita vaihtoehtoja. if( ehto ) { lause1; else if( ehto2 ) { lause2; else if( ehto3 ) { lause3; else { lause4; Else-if -osia voidaan kirjoittaa ensimmäisen if-osan jälkeen haluttu määrä Jokaisella else-if osalla on oma ehtolausekkeensa. Loppuun voidaan kirjoittaa else-osa. 26

if - else-if -lauseet Esimerkki: Tutkitaan mikä maa on kyseessä ja asetetaan maan mukainen valuutta. if( maa.equals( Suomi ) { valuutta = Euro ; else if( maa.equals( Ruotsi ) { valuutta = Kruunu ; else if( maa.equals( USA ) { valuutta = Dollari ; else { valuutta = null; Mitä jos muuttujan maa arvo onkin null? Kirjassa lisäksi esimerkki 4.3. 27

switch-lause switch-lauseella saadaan toteutettua monivalintarakenne (mahdollista myös if else-if rakenteena) switch-lauseelle luetellaan eri arvovaihtoehdot, joista suoritetaan se joka täsmää switch-lauseen valintaehtoon. switch-lauseen ehdoksi kelpaa vain primitiivityypiksi evaluoituva lauseke. 28

switch-lause switch-lauseen syntaksi on: switch ja case ovat varattuja sanoja switch ( ehto ) { case arvo1 : lause-lista1 case arvo2 : lause-lista2 case arvo3 : lause-lista3 case... Jos ehto täsmää arvoon arvo2, suoritetaan lause-lista2 29

switch-lause break-lause tarvitsee sijoittaa lähes aina case:n viimeiseksi lauseeksi. Break-lauseesta seuraa kontrollin siirtyminen switch-lauserakenteen loppuun. Jos break-lausetta ei käytetä, kontrolli valuu järjestyksessä seuraavaan caseen. 30

switch-lause Esimerkki switch-lauseesta: switch (valinta) { case T : tallenna(); break; case U : luouusi(); break; case L : lopeta(); break; Katso myös kirjan esimerkki 4.4. 31

Missä ollaan? if-ehtolause Muut ehtolauseet while-lause Muut toistolauseet 32

Toistolauseet Toistolauseet mahdollistavat ohjelmalohkon suorittamisen useita kertoja (0-n). Käytetään usein nimityksiä silmukka tai luuppi. Myös toistolauseita kontrolloidaan booleanlausekkeiden avulla. Javassa on kolmenlaisia toistolauseita: while-lause do-while -lause for-lause 33

while-lause while-lauseella on seuraava syntaksi: while ( ehto ) { lauseet; Jos ehto on tosi (true), lauseet (ohjelmalohko) suoritetaan Lauseiden suorittamisen jälkeen ehto evaluoidaan uudestaan, ja jos ehto on edelleen tosi, lauseet suoritetaan taas. Lauseita suoritetaan toistuvasti niin kauan kunnes ehdosta tulee epätosi (false). 34

while-lauseen logiikka ehdon evaluointi true false lauseet 35

while-lause Esimerkki while-lauseesta: Scanner scan = new Scanner(System.in); int luku = scan.nextint(); while (luku > 0) { System.out.println(luku); luku = scan.nextint(); Jos while-lauseen ehto on heti alussa epätosi, ei lauseeseen liittyvää ohjelmalohkoa suoriteta kertaakaan. Tarkastellaan kirjan esimerkkiä 4.5. 36

Ikuiset silmukat while-silmukan ohjelmalohkossa on pakko jossain vaiheessa tehdä ehdosta falsearvoinen. Jos näin ei käy, suoritetaan silmukkaa ikuisesti. Tämä on yleinen looginen virhe ohjelmansuunnittelussa / toteutuksessa. 37

Ikuiset silmukat Esimerkki ikuisesta silmukasta eli ikiluupista : int laskuri = 1; while (laskuri < 100) { System.out.println(laskuri); laskuri = laskuri - 1; 38

Sisäkkäiset silmukat Silmukoita voidaan kirjoittaa useita sisäkkäin, eli silmukan ohjelmalohko voi sisältää toisen silmukan. int ulompi = 10; while (ulompi > 0) { int sisempi = 10; while (sisempi > 0) { System.out.println( Sisempi ); sisempi = sisempi - 1; System.out.println( Ulompi ); ulompi = ulompi - 1; 39

Missä ollaan? if-ehtolause Muut ehtolauseet while-lause Muut toistolauseet 40

do-while -lause do-while -lauseella on seuraava syntaksi: do { lauseet; while ( ehto ); Lauseet (ohjelmalohko) suoritetaan ensin kertaalleen, sitten ehto evaluoidaan. Lauseet suoritetaan toistuvasti kunnes ehdosta tulee epätosi (false). 41

do-while -lauseen logiikka lauseet true ehdon evaluointi false 42

do-while -lause Esimerkki do-while -lauseesta: boolean totuus = false; do { System.out.println( suoritus ); while (totuus == true); Kuinka monta kertaa yo esimerkin tulostuslause suoritetaan? Katso myös kirjan esimerkki 4.6. 43

while- ja do-while lauseiden vertailu while silmukka do silmukka ehdon evaluointi true lauseet true lauseet false ehdon evaluointi false 44

for-lause for-lauseella on seuraava syntaksi: alustus suoritetaan kerran ennen kuin silmukka alkaa inkrementointi osa suoritetaan jokaisen toiston lopussa for ( alustus ; ehto ; inkrementointi ) { lauseet; lauseet suoritetaan kunnes ehdosta tulee false 45

for-lauseen logiikka alustus ehdon evaluointi true false lauseet inkrementointi 46

for-lause for-lause on toiminnallisesti identtinen seuraavan while-lauseen kanssa: alustus; while ( ehto ) { lauseet; inkrementointi; 47

for-lause Esimerkki for-lauseesta: for (int i = 0; i < 10; i++) { System.out.println(i); Alustusosaa voidaan käyttää muuttujan esittelemiseen. Kuten while-silmukassa, for-silmukan ehto testataan ennen silmukan rungon suorittamista. Käytä mieluiten aina aaltosulkeita JCC-suositusten mukaisesti (myös yhden rivin tapaukset). 48

for-lause for-lause sopii hyvin tilanteisiin, jossa suoritus halutaan toistaa tietty määrä kertoja (toistokerrat voidaan laskea tai määrittää etukäteen). for-lause on ilmaisultaan tiivis. Kaikki for- lauseet voidaan kirjoittaa myös whilelauseina. 49

Ehto- ja toistolause-esimerkki import java.util.scanner; /** * Coca-cola automaatti. * @author Jukka Juslin, Jukka Harju */ public class CokisAutomaatti { private int pullojenmaara; private double pullonhinta; public CokisAutomaatti() { pullojenmaara = 30; pullonhinta = 2.0; public int annakolaa(double rahaaannettu) { System.out.println("Vaihtorahaa saat takaisin: " + (rahaaannettu % pullonhinta)); return (int) (rahaaannettu / pullonhinta); 50

Ehto- ja toistolause-esimerkki public void kaynnistaautomaatti() { double rahaaannettu = 0; int saitpulloja = 0; Scanner scan = new Scanner(System.in); while (pullojenmaara > 0) { System.out.println("Anna rahaa: "); rahaaannettu = scan.nextdouble(); if (rahaaannettu >= pullonhinta) { saitpulloja = annakolaa(rahaaannettu); pullojenmaara = pullojenmaara - saitpulloja; if (pullojenmaara > 0) { System.out.println("Sait " + saitpulloja + " pulloa."); else { System.out.print( "Sold out. Pullot loppu, "); System.out.println("soita 09 11."); else { System.out.println("Raha ei riittänyt."); public static void main(string[] args) { CokisAutomaatti tomaatti = new CokisAutomaatti(); tomaatti.kaynnistaautomaatti(); 51