Tipa boolean
in String
Java pozna tri vrste tipov,
osnovne tipe,
razrede in
tabele. Dva osnovna tipa smo že spoznali, to sta
int
(cela števila) in
double
(realna števila).
Danes bomo spoznali še osnovni tip
boolean
in razred
String
. Tabele bomo obravnavali v naslednji lekciji.
Java ima tri vrste tipov: osnovni tipi,
razredi in tabele.
|
Tip boolean
Tip
boolean
je tip logičnih vrednosti in ima samo dva
elementa:
true
(resnica) in
false
(neresnica).
Primer:
PrimerBoolean.java |
---|
1
2
3
4
5
6
7
8
9
10
11
12
| public class PrimerBoolean {
public static void main(String[] args) {
int a = 17;
int b = 5;
boolean p = (a < b);
boolean q = (a <= b + 12);
System.out.println(p);
System.out.println(q);
}
} |
> javac PrimerBoolean.java
> java PrimerBoolean
false
true |
V 6. vrstici imamo spremenljivko p
tipa
boolean
. V spremenljivko p
se shrani vrednost
false
, saj je vrednost izraza a < b
enaka
false
, saj 17 ni manjše od 5.
V 7. vrstici smo definirali spremenljivko q
tipa
boolean
. Njena vrednost je true
, saj je res,
da je 17 manjše ali enako 5 + 12.
Osnovne operacije za delo s tipom
boolean
so:
Tip boolean |
---|
true | resnica |
false | neresnica |
p && q | logični "in" (konjunkcija) |
p || q | logični "ali" (disjunkcija) |
!p | logična negacija |
Rezultat tipa
boolean
dobimo tudi, kadar uporabljamo
relacije za primerjanje elementov:
Osnovne relacije |
---|
a == b | enakost (za osnovne tipe): a je enako b |
s.equals(t) | enakost (za razrede): objekt s je enak objektu t |
a != b | različnost (za osnovne tipe): a ni enako b |
a < b | a je manjši od b |
a <= b | a je manjši ali enak b |
a > b | a je večji od b |
a >= b | a je večji ali enak b |
Kako se uporablja s.equals(t)
bomo videli, ko bomo
delali z nizi znakov. Zaenkrat si zapomnimo, da se ==
in !=
uporabljata za osnovne tipe int
,
double
in boolean
, za objekte pa se vedno
uporabi metoda equals
.
Naloga 1
Dani sta celoštevilčni spremenljivki int a
in
int b
. Napiši izraz, ki spremenljivko boolean
p
nastavi na true
, če je kvadrat števila
a
večji od kuba števila b
in manjši ali
enak od četrte potence b
.
Program preizkusi za razne vrednost a
in
b
.
Namig
1
2
3
4
5
6
7
8
| public class BepopIsTheBest {
public static void main(String[] args) {
int a = 500;
int b = 234;
boolean p = (tukaj napiši izraz);
}
} |
Naloga 2
Dani sta spremenljivki boolean p
in boolean
q
. Napiši izraz, ki v spremenljivko boolean r
nastavi na true
če je p
enak true
in q
enak false
, ali če je p
enak
false
in q
enak truee
. V ostalih
primerih naj se r
nastavi na false
.
Se pravi, vrednost
r
se določi z naslednjimi
pravili:
če je p == false
in q == false
,
potem je r == false
,
če je p == false
in q == true
,
potem je r == true
,
če je p == true
in q == false
,
potem je r == true
,
če je p == true
in q == true
,
potem je r == false
,
Namig
1
2
3
4
| boolean p = true;
boolean q = false;
boolean r = (tukaj napiši izraz); |
Pogojni stavek
Pogosto želimo v programu napisati ukaz "če je izpolnjen neki
pogoj p
, potem izvedi ukaz A
, sicer izvedi
ukaz B
." (Na primer, "če je temperatura reaktorja
previsoka, potem pokliči gasilce, sicer zadremaj za pol ure.")
To naredimo v Javi s
pogojnim stavkom
if-else
:
if (p) {
A;
}
else {
B;
} |
Zgornji ukaz preberemo takole:
"Če je p
enak
true
, potem izvedi ukaze A
, sicer izvedi ukaze
B
". Shematično prikažemo pogojni stavek takole:
Na primer:
PogojniStavek.java |
---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| public class PogojniStavek {
public static void main(String[] args) {
int a = 23;
int b = 7;
if (a < 100) {
b = a * b;
b = b + 2;
}
else {
b = a + b;
b = b * b;
}
System.out.println(b);
}
} |
> javac PogojniStavek.java
> java PogojniStavek
163 |
Drugi del pogojnega stavka lahko izpustimo:
To pomeni:
"Če je p
enak true
, potem
izvedi A
". (Nariši shemo za ta primer!)
Kadar A
ali B
sestoji iz enega samega ukaza,
lahko zavite oklepaje izpustimo, vendar to odsvetujem.
Pogost primer uporabo pogojnih stavkov je tako imenovani "
if
else
" konstrukt:
if (p1) {
A1;
}
else if (p2) {
A2;
}
.
.
.
else if (pn) {
An;
}
else {
B;
} |
To pomeni:
"če velja p1
, izvedi A1
,
sicer če velja p2
, izvedi A2
,
sicer ..., sicer če velja pn
, izvedi
An
, sicer izvedi B
". Tu se vedno izvede
natanko eden od ukazov
A1
,
A2
, ...,
An
,
B
.
Ta konstrukt uporabljamo, kadar želimo izvesti natanko eno od
večih možnosti.
Naloga 3
Dana je spremenljivka
int temp
, v kateri je zapisana
temperatura zraka. Na zaslon želimo izpisati opisno besedilo:
če je temperatura manj kot -10 C, potem izpišemo
"Zelo zelo je hladno.
".
če je temperatura med -10 C in 0 C, potem izpišemo
"Zelo je hladno.
"
če je temperatura med 0 C in 10 C, potem izpišemo
"Hladno je.
"
če je temperatura med 10 C in 15 C, potem izpišemo
"Vreme je sveže.
"
če je temperatura med 15 C in 25 C, potem izpišemo
"Vreme je prijetno.
"
če je temperatura med 25 C in 30 C, potem izpišemo
"Vroče je.
"
če je temperatura nad 30, potem izpišemo "Zelo je
vroče.
"
Napiši program, ki to naredi.
Tipa char
in String
Poleg številskih tipov int
in double
ter tipa
boolean
, pozna Java še osnovni tip char
(angl.
"chararcter"). Mimogrede, ime tega tipa se
izgovarja "kar" in ne "čar", ker se "character" izgovori
"karakter" ne pa "čarakter".
Karakterji ali
znaki so črke, številke,
presledek, ločila in nasploh vsi znaki, ki jih lahko izpišemo na
zaslon. Karakterje pišemo v enojnih narekovajih:
Vrednosti osnovega tipa char so znaki.
Znake zapišemo v enojnih narekovajih.
|
Posamezni znaki ponavadi niso zelo zanimivi. Bolj koristni so
nizi znakov ali po domače "stringi". V ta
namen ima Java definiran razred
String
. Nize pišemo v
dvojnih narekovajih:
String ime = "Mojca";
String priimek = "Pokraculja"; |
Kaj vse lahko počnemo z nizi?
Tip String |
---|
s + t | stakni niza s in t |
s.equals(t) | primerj niza s in t |
s.length() | dolžino niza |
s.charAt(k) | k -ti znak v nizu s |
Integer.parseInt(s) | niz s predelaj v celo število |
Razred
String
vsebuje še mnoge druge metode za delo z
nizi. (Oglej si dokumentacijo za razred
String
!) Tu
omenimo le, da se znaki v nizu štejejo od 0 dalje. Če torej
izvedemo ukaz
String ime = "Kekec";
char c = ime.charAt(2); |
potem se v
c
shrani znak
'k'
. Več izkušenj z
nizi bomo pridobili pri reševanju naslednjih vaj.
Naloga 4
V spremenljivkah int dan
, int mesec
in
int leto
je shranjen datum. Napiši program, ki v
spremenljivko boolean prosto
shrani true
,
če je dan z danim datumom dela prost.
Opomba: Velika noč in Binkošti sta dela prosta dneva, ki se
vsako leto spreminjata, zato ti ju ni treba upoštevati.
Namig
Dela prosti dnevi so:
1. in 2. januar: Novo leto
8. februar: Slovenski kulturni praznik
Velika noč in velikonočni ponedeljek: spreminjajoč datum
27. april: Dan upora proti okupatorju
1. in 2. maj: Praznik dela
Binkošti: spreminjajoč datum
25. junij: Dan državnosti
15. avgust: Marijino vnebovzetje
31. oktober: Dan reformacije
1. november: Dan spomina na mrtve
25. december: Božič
26. december: Dan samostojnosti
Naloga 5
V spremenljivki String ime
je shranjeno ime. Napiši
program, ki spremenljivko boolean moski
nastavi na
true
, če je ime
moško ime in na
false
, če je žensko ime.
Program naj deluje po naslednjem pravilu: ime je žensko, če
se konča na 'a'
, razen v primeru, ko je enako enemu
od naslednjih imen: "Ziga"
, "Miha"
,
"Matija"
, "Jaka"
.
Naloga 6
Napiši program
VezanaVloga.java
, ki z ukazne
vrstice dobi višino vezane vloge (realno število), mesečno
obrestno mero izraženo v procentih (realno število), in
dolžino vezave v mesecih (celo število), ter izpiše, koliko
denarja se bo nabralo na vezani vlogi. Takole:
> java VezanaVloga 200000 4.5 6
Nabralo se bo 260452.024969503 SIT. |
Pri reševanju naloge je treba vedeti, kako se pretvori niz
znakov, na primer
"4.5"
, ki ga preberemo z metodo
readLine()
, v realno število
4.5
. Za
pretvorbo iz niza v
double
uporabi
Double.parseDouble
,
za pretvorbo niza v
int
pa
Integer.parseInt
.
Kaj se zgodi, če namesto števila vpišete "banana"?