Windows käsurida
Igale arvutile on töötamiseks paigaldatud operatsioonisüsteem (näiteks MS...
Tingimuslause (condition) tähendab, et kood peab vastama mingile etteantud tingimusele. Kõige olulisem neist onif
-lause. Tingimuslausetega saame hakkama, kui me teame vähemalt kuute võrdlusoperaatorit.
Kui me Javas midagi võrdleme, siis saame vastuseks true (tõene) või false (väär/vale). Kõige lihtsam süntaks näeb välja järgmine:
1 2 3 4 | if (tingimus) { teguvus kui on tõene } |
Meie esimene tingimuslause hakkab siis tööle, kui saame sellele vastata “JAH”. Näiteks kui kliendi pikkus on vähemalt 200cm, siis väljastame soovitud lause.
1 2 3 4 5 6 7 8 9 | public class ylesanne5 { public static void main(String[] args) { int pikkus = 203; if (pikkus >= 200) { System.out.println("Täitsa pikk poiss"); } } } |
Hetkel reageeris kood ainult siis, kui tingimus oli täidetud ja rohkem sellelt muud ei oodatud. Aga kui peame igal juhul ära otsustama, et mis juhtuma hakkab, siis lisame else
-direktiivi.
1 2 3 4 5 6 7 8 9 10 11 | public class ylesanne5 { public static void main(String[] args) { int pikkus = 203; if (pikkus >= 200) { System.out.println("Täitsa pikk poiss"); } else { System.out.println("Liiga lühike"); } } } |
Kui on valikuid rohkem kui kaks, siis saame tingimusi juurde lisada else-if-
direktiivi abil. Võtame näiteks õpilaste hindamise, kus hinnete lävendid on järgmised:
Isiklikult meeldib ülevalt kontrollima hakata stiilis: “Kas õpilane sai vähemalt 90p. Kui sai, siis hinne ‘5’“. Ja kui jõuan “3” ära küsida, siis pole enam kontrolli vaja, sest see töö on ebaõnnestunud.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public class ylesanne5 { public static void main(String[] args) { int punktid = 60; if (punktid >= 90) { System.out.println("hinne: 5"); } else if(punktid >= 70){ System.out.println("hinne: 4"); } else if(punktid >= 50){ System.out.println("hinne: 3"); } else { System.out.println("hinne: 2"); } } } |
Tingimuslaused võivad sisaldada ka teisi tingimuslauseid oma sees ning võivad loomulikult sisaldada erinevaid arvutisi. Vaatame näiteks koodi, mis ütleb, kas arv on paaris või paaritu. Teeme jäägiga jagamise tehte. Kui jääk==0, siis on tegemist paaris arvuga.
1 2 3 4 5 6 7 8 9 10 11 12 13 | public class ylesanne5 { public static void main(String[] args) { int arv = 7; if (arv%2 == 0) { System.out.println("Paaris"); } else { System.out.println("Paaritu"); } } } |
Kui tingimuslause peab samaaegselt vastama mitmele tingimusele, siis tuleb mängu loogika operaator AND (eesti k. NING). Kirja tuleb see panna märkide abil &&
. Vaatame näidet, kus arv peab jääma kindlasse vahemikku 15-18.
1 2 3 4 5 6 7 8 9 10 11 12 | public class ylesanne5 { public static void main(String[] args) { int arv = 16; if (arv>=15 && arv<=18) { System.out.println("Sobib!"); } } } |
Kui tingimus peab vastama vähemalt ühele paljudest tingimustest, siis kasutame operaatorit OR (eesti k. VÕI). Koodis kasutame märke ||
. Kontrollime näiteks kas vanus või sünniaasta vastab tingimustele.
1 2 3 4 5 6 7 8 9 10 11 12 13 | public class ylesanne5 { public static void main(String[] args) { int vanus = 19; int synniaasta = 1999; if (vanus>=18 || synniaasta>=2000) { System.out.println("Sobib!"); } } } |
Sõnede puhul ei ole hea mõte kasutada võrdluseks == märke. Sest see kuidas Java sõnesid mälus hoiab võib anda võrdluses vale tulemuse. Ja seepärast kasutatakse sõnede võrdlemiseks meetodit equals
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class ylesanne5 { public static void main(String[] args) { String roll = "kasutaja"; if (roll.equals("admin")) { System.out.println("Tere admin!"); } else { System.out.println("Tere kasutaja!"); } } } |
Ja kui vaja eitada, siis lisa ette hüüumärk: !roll.equals("admin")
Java lubab kasutada ka nö. lühikest tingimuslauset (ternary operator), mille süntaks võib alguses olla võõras, aga kui kasutama hakkad, siis saad aru selle eelistest.
1 2 | tingimus ? tõeneLause : väärLause |
Lisame pisikese näite ka, kus tingimus on tõene, kui see on null või suurem.
1 2 3 4 5 6 7 8 9 10 | public class ylesanne5 { public static void main(String[] args) { int arv = -5; String tulemus = arv >= 0 ? "Sobib" : "Liiga väike"; System.out.println(tulemus); } } |
Switch
lause asendab if-elseif-else
lauset. See teeb täpselt sama asja aga aegajalt on seda lihtsam kirja panna ja visuaalselt tundub silmaga paremini hallatav.
1 2 3 4 5 6 7 8 9 | switch (avaldis) { case väärtus 1: tegevus; break; ... case väärtus-n: tegevus-n; break; default: vaikimisi_tegevus; } |
Pane tähele, et pärast igat lauset on break
, mis katkestab edasised otsingud ning lause lõpus on vaikimisi väärtus (default
), kui sinu etteantud tingimustele midagi ei vastanud. Vaatame näiteks hinde ning väljastame vastavalt sellele tekstilise väärtuse.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public class ylesanne5 { public static void main(String[] args) { int hinne = 4; switch (hinne) { case 5: System.out.println("Väga hea"); break; case 4: System.out.println("Hea"); break; case 3: System.out.println("Rahuldav"); break; default: System.out.println("Kasin"); } } } |
Programmeerimises tähendab tsükkel mingit kindlat arvu tegevust. Me vaatame kaht eelkontrolliga tsüklit FOR
ja WHILE
. Eelkontroll tähendab, et kontroll tehakse enne järgmise tsükli alustamist. Vaatame näidet, kus laseme tsüklil 10 korda käivituda ja sama lauset.
1 2 3 4 | for (int i = 0; i < 10; i++) { System.out.println("Hello World!"); } |
Kuidas see töötab:
Tsüklis loodud numbrit saab kenasti ära kasutada. Näiteks järjekorranumbri loomiseks. Kui tahan, et nummerdus algaks ühest, siis pean tsüklis selle ära määrama.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public class ylesanne5 { public static void main(String[] args) { for (int i = 1; i <= 10; i++) { System.out.println(i+". päkapikk"); } } } //Väljund /* 1. päkapikk 2. päkapikk 3. päkapikk 4. päkapikk 5. päkapikk 6. päkapikk 7. päkapikk 8. päkapikk 9. päkapikk 10. päkapikk */ |
Samat tsüklit kasutasime eelmises harjutuses massiivide puhul, sest massiivi puhul kasutame indekseid. Aga kuna i väärtus on 0, siis tuleb nummerdamiseks +1 juurde lisada
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public class ylesanne5 { public static void main(String[] args) { String[] nimed = {"Kati", "Mati", "Jüri", "Mari", "Malle", "Kalle"}; for (int i = 0; i < nimed.length; i++) { System.out.println(i+1+". "+nimed[i]); } } } //Väljund /* 1. Kati 2. Mati 3. Jüri 4. Mari 5. Malle 6. Kalle */ |
Tsükleid saab kasutada ka teineteise sees. Näiteks esimene tsükkel loob ridu ja teine iga rea veergusid.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | public class ylesanne5 { public static void main(String[] args) { for (int i = 1; i < 10; i++) { for (int j = 0; j < i; j++) { System.out.print("*"); } System.out.println(""); } } } //Väljund /* * ** *** **** ***** ****** ******* ******** ********* */ |
Massiividega töötamiseks on Javas võimalus kasutada foreach
tsüklit, kuid Javas pannakse see kirja natuke teisiti ja seda ei kirjutada nii välja:
1 2 3 4 5 6 7 8 9 10 11 | public class ylesanne5 { public static void main(String[] args) { String[] nimed = {"Kati", "Mati", "Jüri", "Mari", "Malle", "Kalle"}; for (String i : nimed) { System.out.println(i); } } } |
While tsükkel on oma olemuselt sarnane for tsüklile. Erinevus seisneb selles, et muutuja algväärtustatakse väljaspool blokki. Lisame ühe lihtsa näite, kus loome arvud 1-10.
1 2 3 4 5 6 7 8 9 10 11 12 | public class ylesanne5 { public static void main(String[] args) { int arv = 1; while(arv<=10){ System.out.println(arv); arv++; } } } |