You are on page 1of 139

Kulturni centar “Kralj Fahd” Java

1. Uvod u Javu
Sadržaj ove skripte predstavlja upoznavanje sa osnovnim konceptima programiranja i načina pisanja
objektno orjentisanih programa u Java jeziku. Java nije samo programski jezik, već ujedno i velika
biblioteka programskih rutina, te izvršna okolina za izvođenje programa. Java biblioteka programskih
rutina sastoji se od hiljada klasa. Postoje klase za rad s datotekama, klase za rad s 3D grafikom, klase
za pristup bazama podataka, animaciju web-stranica, itd. Moglo bi se reći da se u bibliotekama nalazi
veći dio onoga što će vam ikada zatrebati u programiranju. Ova skripta je namijenjena početnicima,
tako da ćemo se ograničiti na osnove jezika, te na manji dio osnovnih klasa. Ako se do sada niste
nikako bavili programiranjem bit će potrebno uložiti značajan trud u savladavanje gradiva. Java jezik,
zajedno s ogromnim bibliotekama, jezik je namijenjen profesionalnim programerima. Štaviše, Java
biblioteke se stalno proširuju i mijenjaju. Naučiti programirati u bilo kojem jeziku nije moguće bez
praktičnog rada na računaru. Stoga je bitno da primjere kodova iz ove skripte pokušate sami prekucati
i testirati.

1.1 Instalacija
Da biste počeli programirati sa Java programskim jezikom potrebno je da instalirate nekoliko alata. U
ovoj lekciji ćemo objasniti kako da preuzmete potrebne alate s Interneta.
Za pisanje Java koda, na ovom kursu ćemo koristiti besplatni software koji se zove NetBeans. Ovaj
software je među popularnijim programima koji se koriste u radu sa Javom. Prije nego pokrenemo
NetBeans, potrebno je instalirati potrebne Java komponente i fajlove. Započet ćemo sa instalacijom
Java virtualne mašine.

Java virtualna mašina


Java nije vezana ni za jednu specifičnu platformu na kojoj možete raditi. To znači da će Java raditi na
bilo kojem operativnom sistemu. Bilo da koristite Windows, Linux ili Mac operativni sistem, za Javu
ne predstavlja nikakvu bitnu razliku. Virtualna mašina je zapravo program koji služi za ispravno
procesiranje vašeg koda. Dakle, potrebno je instalirati Java virtualnu mašinu da biste mogli pokretati
Java kod.
Java je proizvod kompanije Sun Microsystems, tako da trebate posjetiti web-stranicu ove kompanije
i preuzeti svoju Java virtualnu mašinu, koja se još popularno zove The Java Runtime Environment
(JRE). Otvorite sljedeći link:
http://java.com/en/download/index.jsp
Možete provjeriti da li već imate instaliran JRE na vašem kompjuteru, klikom na link "Do I have Java?".
Kada kliknete na ovaj link, vaš kompjuter će biti skeniran i dobit ćete poruku o tome da li imate JRE
na vašem kompjuteru. U slučaju da nemate, bit ćete upućeni kako da instalirate JRE.

2|Strana
Kulturni centar “Kralj Fahd” Java

Možete takođe direktno otvoriti sljedeći link:


http://java.com/en/download/manual.jsp
Riječ "manual" u linku aludira na to da ćete potrebni alat morati manuelno preuzeti i instalirati. Na
stranici možete uočiti veliki broj linkova za različite operativne sisteme, kao i dokumente sa
instrukcijama.
Nakon preuzimanja i instaliranja, bit će potrebno da restartujete kompjuter. Nakon toga ćete imati
instaliranu Java virtualnu mašinu.

Java Software Development Kit


U ovoj fazi još ne možete pisati Java programe. Imate instaliran jedino software koji omogućava da
se Java programi pokreću na vašem kompjuteru. Da biste pisali i testirali kod, potreban vam je alat
naziva Software Development Kit.
Java Software Development Kit možete preuzeti s narednog linka:
http://developers.sun.com/downloads/
Alat koji ćemo mi koristiti se zove Java SE ( Java Standard Edition). Link do Java SE alata obično se
nalazi pod Top Downloads. Nakon što kliknete na link, trebali biste dobiti dvije opcije preuzimanja,
kao na slici:

Slika 1. Opcije preuzimanja Java Software Development alata

Odaberite opciju NetBeans. Otvorit će se prozor unutar kojeg će biti izlistane opcije preuzimanja, u
ovisnosti o tome koji operativni sistem koristite. U slučaju da je vaš operativni sistem Windows x64,
kliknite na link:
jdk-8u25-nb-8_0_1-windows-x64.exe
U vrijeme pisanja ove skripte ovo je bila najnovija verzija JDK. Vi, svakako, u vrijeme vašeg
preuzimanja uvijek odaberite najnoviju verziju ovog softwarea.
Dakle, koristit ćemo NetBeans za pisanje našeg Java koda. Prije nego pokrenemo ovaj software,
objasnit ćemo kako se radi sa Javom općenito.

3|Strana
Kulturni centar “Kralj Fahd” Java

Rad sa Javom
Kod za program se piše u tekstualnom editoru, znači sav kod koji napišete će izgledati kao obični tekst.
Unutar NetBeansa postoji zaseban prostor unutar kojeg se piše kod. Ovako napisan kod se zove
izvorni kod (eng. source code) i prilikom snimanja mu se dodjeljuje ekstenzija .java. Nakon toga se
koristi program Javac koji pretvara izvorni kod u Java Byte Code, što zapravo predstavlja mašinski kod,
kod koji razumije kompjuter. Ovaj proces pretvaranja se zove kompajliranje. Nakon što program
Javac izvrši kompajliranje, kreira se novi fajl koji ima ekstenziju .class ( u slučaju da je kod ispravno
napisan i da se ne otkriju nikakve greške). Nakon što se kreira fajl .class, Java virtualna mašina ga može
pokrenuti. Opisana tri koraka bi bila:
▪ Kreiranje izvornog koda sa ekstenzijom .java
▪ Upotreba Javac programa za kompajliranje, što kao rezultat daje fajl .class
▪ Pokretanje i izvršavanje fajla .class.

NetBeans upravlja kreiranjem i kompajliranjem fajlova za vas. Cijeli proces se odvija u pozadini i vi ga
ne vidite. Dakle, preuzimanje izvornog fajla, kreiranje .java fajla, kompajliranje i kreiranje .class fajla
će se izvršiti bez vašeg znanja.
U narednoj lekciji ćemo učiti o softwareu NetBeans, tako da ga možete pokrenuti.

1.2 NetBeans Software


Prilikom prvog pokretanja NetBeansa, otvorit će se ekran, kao na slici:

Slika 2. Izgled ekrana prilikom prvog pokretanja NetBeansa

4|Strana
Kulturni centar “Kralj Fahd” Java

Da biste kreirali novi projekat, kliknite File > New Project iz Menija na vrhu. Nakon toga će se pojaviti
prozor, kao na slici:

Mi ćemo kreirati Java aplikaciju (eng. Java Application), tako da je potrebno da od ponuđenih
kategorija odaberete Java, nakon toga Java Application, te kliknete na dugme Next. Dobit ćete
sljedeći prikaz:

Slika 3. Prozor za kreiranje novog projekta

U polju naziva Project Name, ukucajte ime vašeg projekta. Uočite kako se tekst u polju Create Main
Class mijenja da bi se podudarao sa nazivom projekta.
Ako ne dodijelimo ime projektu, naziv klase će biti Main. Mi želimo da se klasa zove PrviProjekat.

Naziv klase će biti PrviProjekat, sa dva velika slova „P“, dok će naziv paketa takođe biti prviprojekat,
ali sa dva mala slova „p“. Lokacija na koju će se vaš projekat snimati po osnovnom podešenju je
navedena u polju naziva Project Location. Ako želite, lokaciju možete promijeniti. Na lokaciji koju
odredite za snimanje projekta kreirat će se folder koji će imati naziv kao vaš projekat. Nakon što
kliknete Finish, NetBeans će u pozadini kreirati sve potrebne fajlove za vas.
Nakon kreiranja fajlova, NetBeans će vas vratiti u grafičko okruženje u kojem možete nastaviti vaš
rad. Obratite pažnju na područje naziva Projects s lijeve strane ekrana. Ako ne vidite ovo područje
kliknite na Window > Projects iz glavnog Menija.

5|Strana
Kulturni centar “Kralj Fahd” Java

Slika 4. Izgled prozora Projects, gdje se nalaze projekti koje kreirate

Kliknite na znak + da izlistate sadržaj vašeg projekta:

Slika 5. Sadržaj projekta naziva PrviProjekat

Nakon što izlistate sadržaj foldera Source Packages, vidjet ćete ponovo naziv vašeg projekta, unutar
kojeg se nalazi Java fajl, koji predstavlja izvorni kod.

Slika 6. Prikaz fajla sa izvornim kodom naziva PrviProjekat.java

Izvorni kod na koji se odnosi izlistani fajl bi trebao biti prikazan desno, unutar većeg područja
predviđenog za pisanje teksta. Naslov će mu biti PrviProjekat.java. Ako ne vidite prozor sa kodom,
kliknite na PrviProjekat.java koji se nalazi u Projects prozoru lijevo.
Prozor za pisanje koda bi trebao izgledati kao na slici, s tim da će na mjestu autora pisati vaše ime:

6|Strana
Kulturni centar “Kralj Fahd” Java

Slika 7. Izgled prozora za pisanje koda

Bitno je da uočite naziv klase (eng. class) koja je u našem primjeru PrviProjekat:
public class PrviProjekat {
Isto ime ima i java izvorni fajl u prozoru Projects - PrviProjekat.java. Kompajler zahtijeva da je ime
izvornog fajla i ime klase isto da bi se program ispravno izvršio. Ako se naprimjer .java fajl zove
prviProjekat, a klasa PrviProjekat, pri kompajliranju će se pojaviti greška, zbog malog prvog slova u
nazivu .java fajla i velikog prvog slova u nazivu klase.
Paket unutar kojeg se nalazi izvorni kod se takođe zove prviprojekat, ali ovo nije bilo obavezno. Paket
može imati i drugačije ime od izvornog fajla i klase, ali ime izvornog fajla i ime klase moraju biti isti.

1.3 Java komentari


Kada kreirate novi projekat u NetBeansu, primijetit ćete tekst sive boje sa mnoštvom znakova (*) i (/).

7|Strana
Kulturni centar “Kralj Fahd” Java

Slika 8. Komentari u kodu su prikazani sivom bojom

Tekst sive boje predstavlja komentare. Prilikom izvršavanja programa, komentari se ignorišu. To znači
da unutar mjesta za komentare možete kucati šta god želite. Dobra praksa je da se komentarima
objašnjava ono što želite postići pisanjem vašeg koda. Komentar možete pisati u jednoj liniji, koju
započinjete sa dvije kose crtice ( // ) :
//Ovo je jedna linija komentara
Ako želite komentar pisati na više linija, to možete postići ovako:
//Ovo je komentar koji
//se nalazi na dvije linije

Ili možete napisati ovako:


/*
Ovo je komentar koji pišemo
na dvije ili više linija
*/

U posljednjem komentaru pisanje smo započeli znakom ( /* ), a završili znakom ( */ ).


Postoje i komentari naziva Javadoc. Ove komentare možete vidjeti na prethodnoj slici. Javadoc
komentar započinje znakom ( /** ), a završava znakom ( */ ). Svaka nova linija komentara započinje
znakom zvjezdice:

8|Strana
Kulturni centar “Kralj Fahd” Java

/**
*Ovo je Javadoc komentar
*/

Javadoc komentari se koriste za dokumentovanje koda. Dokumentovan kod se može pretvoriti u


HTML stranicu koja je od koristi drugim programerima. HTML dokument možete generisati ako
kliknete na Run iz glavnog Menija i odaberete Generate Javadoc. Još uvijek nemate mnogo toga za
vidjeti, jer još nismo napisali nikakav kod.
Sada možemo izbrisati komentare koje je NetBeans generisao. Kod bez komentara će izgledati ovako:

Slika 9. Izgled koda poslije brisanja komentara

U sljedećoj lekciji ćemo učiti o strukturi napisanog koda i načinu na koje pokrećemo programe.

1.4 Struktura Java koda


U kodu na prethodnoj slici prvo pišemo ime paketa (eng. package). Uočite da ova linija koda završava
tačka-zarezom (;). Ako izostavite tačka-zarez, program se neće kompajlirati:
package prviprojekat;
Nakon imena paketa dolazi ime klase (eng. class):
public class PrviProjekat {
}
Klasu možete posmatrati kao jedan segment koda. Potrebno je da kažete Javi gdje će taj segment
koda započinjati, a gdje završavati. To se postiže pisanjem vitičastih zagrada. Početak segmenta koda
se definiše lijevom vitičastom zagradom { , a kraj segmenta desnom }. Sve što se nalazi unutar zagrada
pripada tom segmentu koda, tj. pripada klasi.
Unutar vitičastih zagrada naše klase PrviProjekat, nalazi se ugnježden još jedan segment koda:

9|Strana
Kulturni centar “Kralj Fahd” Java

public static void main( String[ ] args ) {


}
Riječ main, što znači glavna, je jako bitna, jer od nje počinje svako izvršavanje Java koda. Kada se
pokrene program, prvo se traži metoda naziva main. Nešto kasnije ćemo učiti o metodama, ali za sada
je dovoljno da znate da se unutar metoda pišu linije koda kojima se postiže određena funkcionalnost.
Nakon što se pronađe metoda main, prvo se izvršava cijeli kod koji je napisan unutar njenih vitičastih
zagrada. U slučaju da se u vašem Java programu ne nalazi metoda main, pojavit će se greška pri
kompajliranju. U definiciji main metode public znači da je metoda vidljiva i izvan naše klase; static
znači da nije potrebno da kreirate novi objekat, a void znači da ona ne vraća nikakvu vrijednost.
Unutar zagrada se nalaze argumenti komandne linije. Za sada nije potrebno da išta od navedenog
detaljno razumijete, jer ćemo to objasniti u nastavku. Bitno je da zapamtite da smo do sada napisali
jednu klasu, čije je ime PrviProjekat. Unutar ove klase se nalazi metoda naziva main. Klasa i metoda
imaju zaseban par vitičastih zagrada unutar kojih pišemo kod i kažemo da metoda main pripada klasi
PrviProjekat.

1.5 Pokretanje Java programa


Kada pokrenete program u NetBeansu, rezultat će se prikazati unutar prozora Output, koji se nalazi
na dnu ekrana, odmah ispod vašeg koda. Ovakva organizacija prikaza prozora je poboljšana, jer se
prije prilikom pokretanja programa rezultat prikazivao u konzoli, tj. odvojenom prozoru koji je bilo
potrebno otvoriti. Postoji više načina na koje možete pokrenuti program u NetBeansu.
Najjednostavniji je da pritisnete tipku F6 na tastaturi. Možete takođe koristiti i glavni Meni za
pokretanje programa. Iz Run Menija odaberite Run Project:

Slika 10. Pokretanje programa iz Run Menija

10 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Možete kliknuti i na zelenu strelicu iz alatne trake:

Slika 11. Pokretanje programa pomoću ikone

Za pokretanje programa možete koristiti i prozor Projects. Na ovaj način ćete biti sasvim sigurni da
pokrećete željeni izvorni kod. Jednostavno kliknite desnim klikom na izvorni Java fajl i iz Menija koji
će se prikazati odaberite Run File.

Slika 12. Pokretanje programa iz Projects prozora

Odaberite neku od navedenih metoda i pokrenite program. Rezultat će biti prikazan u prozoru
Output.

Slika 13. Rezultat izvršavanja programa se prikazuje u prozoru Output

11 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Pored naziva prozora Output nalazi se ime našeg projekta: PrviProjekat. Moguće je da ponovo brzo
pokrenete program klikom na dvije zelene strelice s lijeve strane Output prozora.

1.6 Ispis teksta u prozoru Output


Kod koji je trenutno napisan možete pokrenuti, iako on ništa ne izvršava. Kod je ispravno napisan,
tako da će se moći kompajlirati. Dodajmo još jednu liniju koda da vidimo kako sve funkcioniše.
U Output prozoru ćemo ispisati neki tekst. Dodajte narednu liniju koda vašoj main metodi:
public static void main( String[ ] args ) {
System.out.println( "Moj Prvi Projekat" );
}

Nakon što ukucate tačku poslije riječi System, NetBeans će vam pokušati pomoći, prikazujući listu
opcija koju možete odabrati:

Slika 14. Pomoćna lista opcija koje možete koristiti uz System

Odaberite opciju out i dvostrukim klikom je dodajte vašem kodu, te nakon toga ukucajte tačku.
Ponovo će se pojaviti lista opcija:

12 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 15. Pomoćna lista opcija koju možete koristiti uz out

Odaberite println(). Ovo je komanda za ispis teksta u Output prozoru. Potrebno je još samo da upišete
tekst koji želite ispisati unutar zagrada println metode. Tekst se piše pod dvostrukim navodnicima:

Slika 16. Unutar zagrada println metode pod navodnicima pišemo tekst za ispis

Kada stavite kursor između navodnika, ukucajte tekst:

Slika 17. Kucanje teksta za ispis

Obratite pažnju da ova linija koda završava tačka-zarezom. Svaka linija koda kojom definišemo neki
zadatak unutar Jave mora se završavati tačka-zarezom. Ako ga izostavite, program se neće
kompajlirati.
Sada možemo testirati (pokrenuti) program. Prije toga spasite svoj rad. Program spašavate tako što
kliknete na File > Save, ili File > Save All. Možete takođe kliknuti i na ikonicu za snimanje u alatnoj
traci.

13 | S t r a n a
Kulturni centar “Kralj Fahd” Java

1.7 Dijeljenje programa s drugima


Programe koje vi napišete možete slati drugima i oni će ih moći koristiti. Da biste poslali program
nekom drugom, potrebno je da kreirate JAR fajl (Java Archive). NetBeans će za vas odraditi cijeli
posao, potrebno je samo da iz Run Menija na vrhu odaberete Clean and Build Project.
Nakon toga NetBeans spašava vaš rad i kreira sve dodatne potrebne fajlove. Bit će kreiran folder
naziva dist i svi fajlovi će se pohraniti u njega. Potražite lokaciju na kojoj se snimaju vaši NetBeans
projekti i tu biste trebali vidjeti dist folder:

Slika 18. Prikaz sadržaja foldera naziva PrviProjekat

Dvostrukim klikom ćemo otvoriti dist folder da bismo vidjeli njegov sadržaj:

Slika 19. Prikaz sadržaja dist foldera

Kao što je prikazano na slici, unutar foldera se nalazi JAR fajl i README tekstualni fajl. Unutar
tektualnog fajla se nalaze instrukcije o tome kako pokrenuti program iz konzole.

14 | S t r a n a
Kulturni centar “Kralj Fahd” Java

2. Varijable
2.1 Integer varijable
Programi funkcionišu na principu manipulacije podacima koji su smješteni u memoriji. Podaci mogu
biti brojevi, tekst, objekti, pokazivači ka drugim memorijskim adresama, itd. Svaki podatak mora imati
ime da bi mu se moglo pristupiti kada god je to potrebno. Ime podatka i njegova vrijednost
predstavljaju varijablu. Započet ćemo sa brojčanim podacima.
Postoji više vrsta brojeva, pa prema tome i više načina njihovog zapisa unutar Jave. Cijeli brojevi, kao
što su 7, 10, 11, itd. definišu se pomoću varijable int. Riječ int je skraćenica od integer, što na
engleskom jeziku znači cijeli broj. Realni brojevi, kao što su 8.4, 10.5, 12.8, itd. se definišu korištenjem
varijable double. Definisanje, deklaracija ili dodjela vrijednosti varijabli se vrši korištenjem znaka
jednakosti (=). Napisat ćemo nekoliko primjera. Pri tome možete koristiti svoj PrviProjekat kod.
Da biste definisali cijeli broj, dodajte sljedeću liniju koda main metodi:
public static void main(String[ ] args) {
int prvi_broj;
System.out.println("Moj prvi projekat");
}

Da bi Java razumjela da želite da definišete cijeli broj, potrebno je da ukucate riječ int, nakon koje
sljedi razmak. Nakon toga pišete ime koje želite da vaša varijabla ima. Za pisanje imena varijabli
postoji nekoliko pravila:
1.Ime varijable ne smije započeti brojem, tako da je prvi_broj ispravno napisano, ali 1.broj nije
ispravno napisano. Brojevi se mogu pojaviti na nekom drugom mjestu unutar imena, samo ne na
prvom.
2.Za varijable ne smijete upotrebljavati ključna imena koja Java koristi. Postoji jako mnogo ovih
ključnih predefinisanih imena, ali ih možete prepoznati tako što će biti drugačije boje od koda koji
pišete, kao npr. riječ int u navedenom primjeru.
3.Unutar imena varijable ne smiju se nalaziti razmaci. Da smo našu varijablu deklarisali kao int prvi
broj, pojavila bi se greška. U ovom primjeru smo koristili donju crticu da razdvojimo dvije riječi.
Ustaljena praksa je da se početno slovo prve riječi varijable piše kao malo, a prvo slovo druge riječi
varijable kao veliko, naprimjer: prviBroj, mojPrviBroj.
Imena varijabli se razlikuju prema velikim i malim slovima, tako da su prviBroj i PrviBroj dva različita
imena kojima se predstavljaju dvije različite varijable.
Da biste dodijelili vrijednost varijabli naziva prvi_broj, ukucajte znak jednakosti, a zatim vrijednost
koju joj želite dodijeliti:
public static void main(String[ ] args) {

15 | S t r a n a
Kulturni centar “Kralj Fahd” Java

int prvi_broj;
prvi_broj = 10;
System.out.println("Moj prvi projekat");
}

Ovim kodom govorimo Javi da želimo pohraniti vrijednost 10 u varijablu tipa integer, koju smo nazvali
prvi_broj.
Ako vam se više sviđa, možete dvije linije za deklaraciju varijable napisati i kao jednu:
public static void main(String[ ] args) {
int prvi_broj = 10;
System.out.println("Moj prvi projekat ");
}

Da bismo vidjeli šta smo ovim kodom postigli, malo ćemo izmijeniti println metodu:
System.out.println( "Prvi broj = " + prvi_broj);
Trenutno, u zagradama println metode imamo tekst koji smo proizvoljno napisali pod navodnicima:
"Prvi broj = "
Nakon toga imamo znak +, poslije koga dolazi ime varijable:
+ prvi_broj;
Znak plus znači „poveži zajedno“. Dakle, zajedno vežemo proizvoljno napisani tekst i ime naše
varijable.
Sada bi prozor za kod trebao izgledati ovako:

Slika 20. Kod za ispis integer varijable

Još jednom naglašavamo kako svaka linija funkcionalnog koda mora završavati tačka-zarezom.
Nakon pokretanja programa, prikazat će se rezultat u Output prozoru:

16 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 21. Rezultat izvršavanja koda sa slike 20.

Linija koda kojom smo postigli ispis je bila: System.out.println( "Prvi broj = " + prvi_broj);. Tekst koji
se nalazio pod navodnicima je spojen sa vrijednošću varijable prvi_broj.
Sada ćemo napisati kod za sabiranje i ispisati rezultat tog sabiranja u Output prozoru. Potrebno je da
dodamo još dvije int varijable kodu, jednu za drugi broj, a drugu za rezultat.
int prvi_broj, drugi_broj, rezultat;
Uočite kako sada imamo imena tri varijable u istoj liniji koda. Ovo je još jedan način za deklaraciju,
koji se upotrebljava u slučaju da su dvije ili više varijabli istog tipa (u ovom primjeru to je int). Svaku
varijablu razdvajamo zarezom.
Nakon što smo deklarisali varijable, možemo im dodijeliti različite vrijednosti:
prvi_broj = 10;
drugi_broj = 20;
rezultat = prvi_broj + drugi_broj;

Želimo da varijabla rezultat prikazuje zbir prvog i drugog broja. Sabiranje se vrši korištenjem znaka
plus (+). Java će s desne strane jednakosti sabrati vrijednosti koje se nalaze unutar varijabli prvi_broj
i drugi_broj. Nakon što završi sa sabiranjem, rezultat će se smjestiti u istoimenu varijablu. Umjesto da
smo napisali rezultat = 10 + 20; iskoristili smo varijable. Java će prvo preuzeti vrijednosti iz tih varijabli,
zatim izvršiti sabiranje, te na kraju dodijeliti rezultat varijabli s lijeve strane jednakosti.
U slučaju da još uvijek nije jasno koji je redoslijed radnji bio, pogledajte sliku:

Slika 22. Redoslijed izvršavanja radnji pri sabiranju

Sve što smo uradili ima svoj ekvivalent u kodu:


rezultat = 10 + 20;

17 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Kako Java već zna šta se nalazi unutar varijabli, dovoljno je da koristimo njihova imena umjesto fiksnih
vrijednosti.
Sada ćemo izmijeniti println metodu ovako:
System.out.println ("Rezultat sabiranja = " + rezultat );
Opet smo kombinovali pisanje teksta pod navodnicima sa imenom varijable. Vaš prozor sa kodom bi
sada trebao izgledati ovako:

Slika 23. Kod za ispis rezultata sabiranja dva integer broja

Nakon što pokrenete program, Output prozor će vam prikazati sljedeće:

Slika 24. Rezultat izvršavanja koda sa slike 23.

Koraci pri izvršavanju programa su bili:


1. Pohranjivanje prvog broja
2. Pohranjivanje drugog broja
3. Sabiranje ova dva broja
4. Pohranjivanje rezultata u dodatnu treću varijablu naziva rezultat
5. Ispis vrijednosti koja se nalazi u varijabli rezultat.

Ovako napisan kod možete kombinovati i sa konstantnim vrijednostima, koje nisu varijable, kao što
je to broj 12 u narednom primjeru:
rezultat = prvi_broj + drugi_broj + 12;
Pokrenite program ponovo. Da li ste mogli pretpostaviti šta će se ispisati? Ako jeste, dobro ste
savladali dosadašnje lekcije.

18 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Možda se pitate koliko velike brojeve možete pohraniti u varijablu tipa int. Najveći dozvoljeni broj je
2147483647, a najmanji je -2147483648. U slučaju da su vam potrebni veći ili manji brojevi od
navedenih, koristite varijablu tipa double.

2.2 Double varijable


Varijabla double se koristi za jako velike vrijednosti brojeva, ali se koristi i za definisanje realnih
brojeva. U slučaju da pokušate realni broj pohraniti u varijablu tipa integer, NetBeans će podvući kod,
čime će ga okarakterisati neispravnim, a ako pokrenete program, kompajler će prijaviti grešku.
Prethodni kod ćemo izmijeniti tako što ćemo na mjestu int napisati double. Dakle, promijenite:
int prvi_broj, drugi_broj, rezultat;
u ovo:
double prvi_broj, drugi_broj, rezultat;
Sada izmijenite i vrijednosti, tako da predstavljaju realne brojeve:
prvi_broj = 10.5;
drugi_broj = 20.8;

Ostatak koda nemojte mijenjati. Sada main metoda izgleda ovako:

Slika 25. Kod za ispis rezultata sabiranja dva double broja

Nakon pokretanja programa, dobit ćete sljedeći rezultat:

Slika 26. Rezultat izvršavanja koda sa slike 25.

Testirajte kod tako što ćete mijenjati vrijednosti koje su trenutno dodijeljene varijablama za prvi i
drugi broj.

19 | S t r a n a
Kulturni centar “Kralj Fahd” Java

2.3 Short i Float varijable


Dva preostala tipa varijabli koja ćemo naučiti su short i float. Varijabla tipa short se koristi za
pohranjivanje malih cjelobrojnih vrijednosti. Njen rang je između -32,768 i +32,767. U primjeru u
kojem smo koristili int varijablu, mogli smo slobodno koristiti short. Dakle, varijablu tipa short
koristimo samo u slučaju kada smo sigurni da vrijednosti neće biti iznad 32,767 ili ispod -32,768.
Tip double, koji smo koristili, nam omogućava da pohranimo jako velike vrijednosti za realne brojeve.
Umjesto korištenja ovog tipa, mogli smo koristiti float tip. Kada pohranjujete vrijednost u varijablu
tipa float, potrebno je da na kraju realnog broja dodate slovo „f“:
double prvi_broj, drugi_broj, rezultat;
prvi_broj = 10.5f;
drugi_broj = 20.8f

2.4 Jednostavne aritmetičke operacije


U kombinaciji sa varijablama možete koristiti sljedeće operatore za artimetičke operacije:
+ (operator sabiranja)
- (operator oduzimanja)
* (operator množenja)
/ (operator dijeljenja).

Izbrišite simbol plus koji smo koristili za sabiranje u prethodnom primjeru. Koristite druge navedene
operatore i testirajte rezultat. Prilikom dijeljenja kao rezultat ćete dobiti jako veliki broj.
Broj koji biste trebali dobiti pri dijeljenju je 0.5048076923076923. Broj je dugačak jer smo za tip
varijable koristili double. Promijenite double u float. Pri tome nemojte zaboraviti dodati slovo „f“ na
kraju svakog broja. Vaš kod bi trebao izgledati ovako:

Slika 27. Kod za ispis rezultata dijeljenja dva float broja

Kada pokrenete ovaj kod, rezultat će biti 0.5048077. Java će ispisati samo 6 brojeva poslije decimalne
tačke, a ostale će pritom zaokružiti. Dakle, sada vidite na primjeru da double varijabla sadrži više
cifara. Double inače predstavlja 64 bitni broj, dok je float 32 bitni. Veći broj bita daje mogućnost većeg
prikaza cifara.

20 | S t r a n a
Kulturni centar “Kralj Fahd” Java

2.5 Redoslijed operacija


Računanje u Javi je moguće korištenjem više brojeva i kombinacijom aritmetičkih operacija. U
kompleksnijim računima morate paziti na redoslijed operacija, koji je isti kao u matematici.
prvi_broj = 100;
drugi_broj = 75;
treći_broj = 25;
rezultat = prvi_broj - drugi_broj + treći_broj;

Baš kao i u matematici, računanje će se vršiti s lijeve ka desnoj strani. Tako će se prvo izračunati 100-
75, što je 25, a zatim 25 + 25, što kao rezultat daje 50. Ako želite sabrati drugi i treći broj, a zatim zbir
oduzeti od prvog broja, potrebno je koristiti zagrade. U tom slučaju rezultat će biti 0.
Druga kalkulacija je:
rezultat = prvi_broj – (drugi_broj + treći_broj);

Slika 28. Primjer redoslijeda matematičkih operacija

Promijenit ćemo operator + u operator *.


rezultat = prvi_broj – drugi_broj * treći_broj;
U ovom primjeru množenja Java ne računa s lijeva na desno, nego slijedi pravila o redoslijedu
matematičkih operacija. Kako je množenje starija operacija, prvo će se ono izvršiti, a tek nakon njega
sabiranje. Ono što Java zapravo radi je:
rezultat = prvi_broj – (drugi_broj * treći_broj);
U ovom slučaju nije bilo potrebno koristiti zagrade, jer Java zna da prvo treba izvršiti množenje, ali
ako ste željeli prvo izvršiti oduzimanje, a zatim množenje, morali biste upotrijebiti zagrade:
rezultat = (prvi_broj – drugi_broj) * treći_broj;
Za dijeljenje važe ista pravila kao i za množenje. Sumarno rečeno:
Množenje i dijeljenje – imaju isti prioritet u redoslijedu operacija, ali veći u odnosu na sabiranje i
oduzimanje.
Sabiranje i oduzimanje - imaju isti prioritet u redoslijedu operacija, ali manji u odnosu na dijeljenje i
množenje.

21 | S t r a n a
Kulturni centar “Kralj Fahd” Java

2.6 String varijable


Kao što smo već naveli na početku lekcije o varijablama, varijable mogu sadržavati i tekst. Moguće je
pohraniti i samo jedan karakter teksta, a i više karaktera. Ako želimo pohraniti samo jedan karakter,
koristit ćemo varijablu char. Uglavnom ćemo imati potrebu za pohranjivanjem više karaktera i u te
svrhe ćemo koristiti varijablu tipa String.
Možemo pokrenuti novi projekat iz File > New Project. Opet biramo Java > Java Application. Popunite
podatke kao na slici:

Slika 29. Kreiranje novog projekta za rad sa stringovima

Ime projekta je StringVars, a ime klase je StringVarijable. Izbrišite komentare.


Prilikom deklaracije varijable tipa String, koristit ćete ključnu riječ String (veliko slovo S), upisati
razmak, zatim dodijeliti ime varijabli i završiti tačka-zarezom.
String ime;
Nakon deklaracije, potrebno je dodijeliti vrijednost varijabli. Pišete ime varijable, zatim znak
jednakosti i vrijednost koju želite dodijeliti pod dvostrukim navodnicima:
ime = "William";
Kao i sa varijablom tipa integer, cijelu deklaraciju možete napisati i na jednoj liniji:
String ime = "William";
Deklarišite još jednu string varijablu, koju ćete koristiti za prezime.
String prezime = "Shakespeare";

22 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Za ispis imena i prezimena koristite println metodu:


System.out.println( ime + " " + prezime );
Sada u zagradama println metode imamo nešto što do sada nismo vidjeli:
ime + " " + prezime
Ovim želimo reći da se prvo ispiše vrijednost koja se nalazi u varijabli ime. Nakon toga koristimo znak
+ za spajanje sa narednim dijelom. U narednom dijelu se nalazi razmak pod navodnicima. Kako smo
razmak stavili pod navodnike, Java će znati da poslije imena treba ispisati razmak. Koristimo još
jednom znak +, da bismo opet spojili naredno sa već ispisanim. Ono što slijedi i što će se nadovezati
na ime i razmak je vrijednost varijable prezime.
Iako ovo djeluje komplikovano, Java će izvršiti zapravo sasvim jednostavnu stvar. Ispisat će ime, zatim
razmak, pa prezime. Vaš kod bi sada trebao izgledati kao na slici:

Slika 30. Kod za ispis imena i prezimena

Rezultat u Output prozoru će biti:

Slika 31. Rezultat izvršavanja koda sa slike 30.

Ako pohranjujete samo jedan karakter, koristite ključnu riječ char (malo slovo c). Da biste dodijelili
vrijednost varijabli char tipa koristit ćete jednostruke navodnike:

Slika 32. Kod za ispis inicijala korištenjem char varijable

Ako vrijednost napišete pod dvostrukim navodnicima, NetBeans će podvući taj dio koda crvenom
bojom i prijaviti grešku "incompatible types". Za ispis i korištenje jednog karaktera možete koristiti i
String varijablu, ali vrijednost u ovom slučaju pišete pod dvostrukim navodnicima, tako da je ovo
ispravno:

23 | S t r a n a
Kulturni centar “Kralj Fahd” Java

String ime = "W";


Ali, ovo nije ispravno:
String ime = 'W';

2.7 Input korisnika


Jedna od dobrih stvari od kojih imate koristi pri radu sa Javom su velike biblioteke podataka (koda)
koje možete koristiti. Ovaj kod je napisan za neke specifične zadatke koji se često koriste, tako da nije
potrebno da vi sami radite taj posao, jer je kod za vas već napisan u biblioteci, a vi ga samo trebate
znati upotrijebiti. Sve što trebate uraditi je referencirati biblioteku koja vam treba, te pozvati metodu
koja će obaviti neki specifičan zadatak za vas. Klasa koja upravlja unosom, tj. inputom korisnika se
zove Scanner klasa. Ona se nalazi u biblioteci java.util library. Klasu Scanner morate referencirati, tj.
morate imati način da joj pristupite. To radite pomoću ključne riječi import:
import java.util.Scanner;
Iskaz import se piše prije definicije klase koju imate u svom kodu:
import java.util.Scanner;
public class StringVarijable {
}

Linijom koda import java.util.Scanner; govorite Javi da želite koristiti klasu Scanner, koja se nalazi u
biblioteci java.util library.
Sljedeća stvar koju trebate uraditi je kreiranje objekta Scanner klase. Klasa predstavlja samo gomilu
koda, koji ništa nije u stanju da izvrši, sve dok se iz njega ne kreira objekat.
Za kreiranje novog Scanner objekta koristimo sljedeći kod:
Scanner input_korisnika = new Scanner( System.in );
Na mjestu za tip varijable ovaj put smo upotrijebili Scanner. Prije smo tu pisali int, String, char, itd.
Varijabli Scanner smo dodijelili ime input_korisnika. Poslije znaka jednakosti pišemo ključnu riječ new.
Riječ new znači - novi i koristimo je za kreiranje objekta klase. Objekat koji u ovom primjeru kreiramo
je izveden iz Scanner klase. U zagradama moramo reći Javi da se ovaj input odnosi na sistem (System
Input – System.in).
Da bismo preuzeli unos korisnika, pozvat ćemo jednu od mnogo metoda koje su nam dostupne unutar
Scanner objekta. Jedna od tih metoda se zove next. Njome preuzimamo sljedeći string teksta kojeg
korisnik unese sa tastature.
String ime;
ime = input_korisnika.next();

24 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Nakon objekta input_korisnika kucamo tačku. Pojavit će se lista metoda ovog objekta koje možete
upotrijebiti. Mi ćemo dvostrukim klikom odabrati next i ukucati tačku-zarez da završimo ovu liniju
koda. Prije nego prihvatimo unos korisnika, možemo mu ispisati neku poruku da ga informišemo o
tome šta se zapravo od njega očekuje da unese:
String ime;
System.out.print("Unesite svoje ime: ");
ime = input_korisnika.next( );

Primijetite da smo ovaj put za ispis teksta u Output prozoru koristili print, dok smo u prethodnim
primjerima svaki put koristili println. Razlika je u tome što će println, nakon što završi sa ispisom,
pomjeriti kursor u novi red, a print će zadržati kursor na istoj liniji ispisa.
Takođe ćemo obavijestiti korisnika da želimo da unese i svoje prezime:
String prezime;
System.out.print("Unesite svoje prezime: ");
prezime = input_korisnika.next( );

Kod je isti kao u prethodnom primjeru za unos imena, ali ovaj put će Java pohraniti unos u varijablu
naziva prezime.
Nakon što smo preuzeli podatke koje je korisnik utipkao, možemo ih ispisati.
String ime_prezime;
ime_prezime = ime + " " + prezime;
System.out.println("Vi se zovete: " + ime_prezime);

Definisali smo još jednu String varijablu naziva ime_prezime. U nju ćemo da pohranimo sadržaj
varijable ime i sadržaj varijable prezime. Još ćemo između ove dvije vrijednosti upisati razmak.
Posljednjom linijom koda sadržaj varijable ime_prezime uz tekst „Vi se zovete“ ćemo ispisati u Output
prozoru.

25 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Ako ste sve do sada uradili ispravno, vaš kod bi trebao izgledati kao na slici:

Slika 33. Primjer korištenja Scanner klase za preuzimanje unosa korisnika

Kada pokrenete program, prikaz će biti:

Slika 34. Rezultat izvršavanja koda sa slike 33. – prvi dio

Izvršavanje koda se pauzira jer se čeka da korisnik unese neku vrijednost za svoje ime. Program se
neće nastaviti izvršavati sve dok ne pritisnete tipku Enter. Kliknite pored teksta „Unesite svoje ime:“,
upišite nešto i pritisnite Enter.
Nakon što pritisnete Enter, Java će preuzeti tekst koji ste ukucali i pohraniti ga u varijablu koja se
nalazi s lijeve strane jednakosti. To je u našem primjeru varijabla ime.
Program zatim izvršava narednu liniju koda, kojom će se ispisati „Unesite svoje prezime“. Čim kliknete
Enter, prikaz u Output prozoru će biti:

26 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 35. Rezultat izvršavanja koda sa slike 33. – drugi dio

Ukucajte prezime i ponovo pritisnite Enter:

Slika 36. Rezultat izvršavanja koda sa slike 33. – treći dio

Unos korisnika se ovim završio i ostatak programa se nastavlja izvršavati. Na kraju ćete kao rezultat
dobiti:

Slika 37. Rezultat izvršavanja koda sa slike 33. u cjelini

Sumarno: Koristili smo Scanner klasu da preuzmemo unos korisnika sa tastature. Unos korisnika smo
pohranili u varijable. Rezultat smo na kraju ispisali u Output prozoru.

2.8 Input prozori


Postoji još jedna klasa koju možete koristiti za prihvatanje unosa korisnika. To je klasa JOptionPane.
Ova klasa se nalazi u biblioteci javax.swing library. Koristeći ovu klasu, možete korisniku prikazati
prozor za unos podataka:

Slika 38. Prozor za unos podataka

27 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Takođe, ispis se može ljepše prikazati:

Slika 39. Prozor za ispis poruke korisniku

Izmijenit ćemo kod iz prethodne lekcije tako da koristi klasu JOptionPane.


Prvo moramo dodati liniju koda kojom želimo referencirati biblioteku u kojoj se nalazi klasa:
import javax.swing.JOptionPane;
Ovim govorimo Javi da želimo imati pristup klasi JOptionPane, koja se nalazi u biblioteci javax.swing
library.
Za ovaj kod možete napraviti novi projekat, ako ne želite modificirati kod iz prethodne lekcije. Mi
ćemo napraviti novi projekat naziva InputProzori:
Dodajte import liniju koda:

Slika 40. Dodavanje import linije koda novom projektu

Razlog zbog kojeg je ova linija koda podvučena, je to što klasu JOptionPane nismo nigdje koristili.
Onog časa kada je počenemo koristiti žuta linija će nestati.
Da bismo prikazali prozor za input u koji korisnik može kucati, koristit ćemo metodu showInputDialog
klase JOptionPane. Korisnik će unijeti svoje ime koje će odmah biti pohranjeno u varijablu, kao i u
prethodnoj lekciji. Dodajte sljedeće linije koda main metodi:
String ime;
ime = JOptionPane.showInputDialog("Vaše ime je:");

Čim ukucate tačku poslije JOptionPane vidjet ćete sljedeću listu opcija:

28 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 41. Lista opcija za korištenje uz JOptionPane klasu

Dvostrukim klikom odaberite showInputDialog. Unutar zagrada ćete ukucati poruku koju želite
prikazati iznad polja za unos teksta. U ovom primjeru smo napisali "Vaše ime je:". Kao i kod svih
stringova bilo je potrebno da ovaj tekst stavimo pod navodnike.
Dodat ćemo kod i za unos prezimena:
String prezime;
prezime = JOptionPane.showInputDialog("Vaše prezime je:");

Spojite ime i prezime i dopišite tekst koji želite prikazati korisniku:


String ime_prezime;
ime_prezime = "Vi ste: " + ime + " " + prezime;

Za ispis rezultata korisniku napišite kod:


JOptionPane.showMessageDialog( null, ime_prezime );
Ovaj put ćemo iz liste koja se pojavi nakon što ukucamo tačku poslije JOptionPane odabrati
showMessageDialog. Unutar zagrada prvo pišemo ključnu riječ null. Ovim označavamo da prozor sa
porukom koji će se prikazati nije povezan ni sa čim drugim unutar programa. Nakon zareza, kucamo
tekst koji želimo prikazati korisniku. Vaš kod u cjelini bi trebao izgledati ovako:

29 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 42. Primjer korištenja JOptionPane klase

Uočite posljednju liniju koda:


System.exit(0);
Kao što samo ime metode sugeriše (exit), ovom linijom koda osiguravamo izlazak iz programa. Njom
se takođe uklanjaju svi kreirani objekti iz memorije.
Sada ćemo pokrenuti kod. Još jedan način za pokretanje unutar NetBeansa je da kliknete desnim
klikom bilo gdje unutar prozora za pisanje koda. Iz Menija koji se pojavi odaberite Run File.
Prvo će se pojaviti prozor za upis imena. Ukucajte svoje ime i kliknite OK:

Slika 43. Rezultat izvršavanja koda sa slike 42. – prvi dio

30 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Nakon toga se pojavljuje prozor za upis prezimena. Ukucajte svoje prezime i kliknite OK:

Slika 44. Rezultat izvršavanja koda sa slike 42. – drugi dio

Nakon što kliknete OK, pojavit će se poruka korisniku:

Slika 45. Rezultat izvršavanja koda sa slike 42. – treći dio

Kliknite OK da završite rad sa programom.

Vježba 1
Prozor za unos i prozor za prikaz poruke se mogu i dodatno formatirati. S tim u vezi isprobajte
sljedeće:
showInputDialog("Ime:", "Unesite vaše ime");
showInputDialog("Prezime", "Unesite vaše prezime");

Vježba 2
Za prozor kojim prikazujete poruku isprobajte sljedeći kod:
showMessageDialog(null, ime_prezime, "Ime", JOptionPane.INFORMATION_MESSAGE);

Vježba 3
Umjesto JOptionPane.INFORMATION_MESSAGE isprobajte:
ERROR_MESSAGE
PLAIN_MESSAGE
QUESTION_MESSAGE
WARNING_MESSAGE

31 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Vježba 4
Input prozori se ne koriste samo za tekst: preko njih možete prihvatati i brojeve koje korisnik unese.
Napišite program u kojem od korisnika tražite da unese dva broja, visinu i dužinu za pravougaonik.
Ove podatke iskoristite za računanje površine pravougaonika (P = dužina* visina). Trebat će vam
dodatna pomoć za rješenje.
Pomoć za izradu Vježbe 4
Koristite String varijable za prihvatanje brojeva koje unese korisnik:
String dužina;
dužina = JOptionPane.showInputDialog("Dužina pravougaonika je:");

Međutim, nije moguće da vršite operaciju množenja nad stringovima. Potrebno je da pretvorite
Stringove u cijele brojeve (eng. integer). String pretvaramo u integer na sljedeći način:
Integer.parseInt( string_koji_konvertujemo )
Ukucali smo Integer, zatim tačku, pa parseInt() metodu. Ovoj metodi kao argument prosljeđujemo
ime string varijable koju želimo pretvoriti u integer.
Potrebno je deklarisati int varijablu za površinu. U istoj liniji koda možete izvršiti i pretvaranje stringa
u integer i množenje.
int površina = Integer.parseInt( string_jedan ) * Integer.parseInt( string_dva);
Za prikaz poruke koristite lančano uvezivanje varijabli i teksta koje smo učili u prethodnim lekcijama:
"rezultat = " + površina

Vježba 5
Program će se srušiti ako za visinu i dužinu pravougaonika ukucate realne brojeve. Kako biste riješili
ovaj problem? Da li sad ima smisla korištenje Integer.parseInt?

32 | S t r a n a
Kulturni centar “Kralj Fahd” Java

3. Kontrola toka programa


3.1 If iskaz
Programiranje koje ste do sada radili predstavlja sekvencijalno programiranje, što znači da će se kod
izvršavati od vrha prema dnu. Čitanje i izvršavanje koda je linearno, što znači da započinje sa prvom
linijom koda koju napišete i završava sa zadnjom. Nećete uvijek željeti da se programi ovako
izvršavaju. Vrlo često ćete imati potrebu da ograničite izvršavanje koda, tj. da postavite uslove pri
kojima će se kod izvršavati. Recimo da želite prikazati dvije različite poruke: jednu ako je korisnik
stariji od 18 godina, a drugu ako nije. Drugim riječima, želite mogućnost kontrole toka programa, a to
možete postići koristeći uslovnu logiku.
Uslovna logika se uglavnom odnosi na ključnu riječ IF , što znači „ako, u slučaju da je“:
Ako (eng. IF) je korisnik stariji od 18 godina prikaži poruku. Srećom, ovu uslovnu logiku je jednostavno
realizirati u Javi. Započet ćemo sa IF iskazima.
Izvršavanje koda pod određenim uslovima se toliko često koristi u programiranju, da je bilo
neophodno da se kreira IF iskaz. Struktura IF iskaza u Javi je:
if ( uslov ) {
}

Započinjete sa ključnom riječju if (mala slova), nakon koje slijedi par zagrada sa uslovom. Nakon toga
slijedi par vitičastih zagrada unutar kojih će se nalaziti neki kod. Ovaj kod želite izvršiti jedino u slučaju
ako je uslov unutar zagrada ispunjen.
if ( godine < 18 ) {
}
Navedeni uslov možemo pročitati ovako: „Ako korisnik ima manje od 18 godina“. Ako korisnik ima
manje od 18 godina, želimo nešto uraditi, recimo ispisati neku poruku:
if ( godine < 18 ) {
//PRIKAŽI PORUKU
}
U slučaju da korisnik nema manje od 18 godina, kod između vitičastih zagrada se neće izvršiti. Kod će
se preskočiti i program će nastaviti sa izvršavanjem od neke linije koda koja bude poslije IF iskaza. Kod
unutar vitičastih zagrada će se izvršavati ako, i samo ako, je uslov zadovoljen. Ako želimo provjeriti da
li korisnik ima više od 18 godina, dovoljno je umjesto znaka manje „<“, napisati znak veće „>“.
if ( godine > 18 ) {
//PRIKAŽI PORUKU
}

33 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Ali, ovim uslovima ne provjeravamo korisnike koji imaju tačno 18 godina. Ako želite provjeriti da li
korisnik ima više od 18 ili tačno 18 godina, koristite znak „veće ili jednako“ ( >= ).
if ( godine >= 18 ) {
//PRIKAŽI PORUKU
}

Na sličan način možete napisati uslov za korisnike koji imaju manje od 18 ili tačno 18 godina:
if ( godine <= 18 ) {
//PRIKAŽI PORUKU
}

Kreirajte novi projekat i nazovite ga IFIskazi. Ovaj put za ime paketa možemo odabrati nešto drugačije
od imena klase i projekta. Desnim klikom na paket ifiskazi, otvorit će se Meni iz kojeg trebate odabrati
Refactor > Rename. U prozoru koji će se otvoriti upišite novo ime za paket – uslovnalogika.

Slika 46. Preimenovanje paketa

34 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Napišimo sljedeći kod:

Slika 47. Primjer korištenja IF iskaza

Deklarisali smo varijablu godine tipa integer i dodijelili joj vrijednost 17. Pomoću IF iskaza
provjeravamo da li je varijabla manja od 18. U slučaju da jeste, kao što znamo u ovom primjeru da
sigurno jeste, ispisat će se poruka.
Rezultat u Output prozoru će biti:

Slika 48. Rezultat izvršavanja koda sa slike 47.

Sada promijenite vrijednost sa 17 na 18 i ponovo pokrenite program. Rezultat će biti:

Slika 49. Rezultat izvršavanja koda sa slike 47. (godine=18)

Dakle, program se izvršava bez poruke o greški, ali u Output prozoru se ništa ne ispiše. Poruka za ispis
nalazi se unutar vitičastih zagrada IF iskaza. Ako uslov nije zadovoljen, bilo koji kod koji se nalazi
unutar vitičastih zagrada se neće izvršiti, tako da u ovom primjeru kako 18 nije manje od 18, uslov
nije zadovoljen i println metoda za ispis se neće izvršiti.
Vježba 1
Simbol „manje od“ zamijenite simbolom „manje ili jednako“. Promijenite poruku tako da odgovara
novom uslovu: „Korisnik ima manje od 18 godina ili tačno 18 godina.“ Pokrenite program. Da li se
poruka ispisuje?

35 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Vježba 2
Promijenite vrijednost varijable godine na 20. Pokrenite program. Da li se poruka ispisuje?

U vašem kodu možete imati više IF iskaza. Testirajte sljedeći kod:

Slika 50. Primjer upotrebe više IF iskaza

U primjeru smo koristili dva IF iskaza. Prvi testira varijablu na vrijednosti manje ili jednake 18. Drugi
testira na vrijednosti veće od 18. Kada je vrijednost varijable godine, 18 ili manje, rezultat je sljedeći:

Slika 51. Rezultat izvršavanja koda sa slike 50. ( godine <= 18)

Promjenom varijable godine na 20, dobit ćemo ovakav rezultat:

Slika 52. Rezultat izvršavanja koda sa slike 50. (godine = 20)

Samo jedan od IF iskaza će rezultirati prikazom poruke u Output prozoru, a sve u ovisnosti o tome
koja će biti vrijednost varijable godine.

36 | S t r a n a
Kulturni centar “Kralj Fahd” Java

3.2 If Else iskaz


Umjesto korištenja dva IF iskaza zaredom, možete koristiti IF...ELSE iskaz. Njegova struktura je:
if ( uslov ) {
}
else {
}

Započinjemo sa riječju if, nakon koje u zagradama navodimo uslov testiranja. U slučaju da je uslov
zadovoljen, izvršit će se kod unutar vitičastih zagrada. Ako uslov nije zadovoljen izvršava se dio else,
tj. kod koji se nalazi unutar njegovih vitičastih zagrada. Izmijenit ćemo kod iz prethodne lekcije tako
da koristi if...else iskaz:

Slika 53. Primjer korištenja if...else iskaza

Vidimo da u navedenom primjeru imamo samo dva izbora: korisnik je ili mlađi ili stariji od 18 godina.
Ako je vrijednost varijable godine = 17, ispisat će se poruka if iskaza, a ako promijenimo vrijednost
varijable na godine = 20 ispisat će se poruka else iskaza.

IF … ELSE IF
Ako imamo više od dvije opcije koje želimo testirati upotrijebit ćemo IF...ELSE IF iskaz. Recimo da
pored postojećih uslova želimo dodatno testirati korisnike na opseg godina: od 19 do 39, od 40 i više.
U ovom slučaju nam IF...ELSE iskaz ne bi koristio, ali zato postoji IF...ELSE IF koji ćemo upotrijebiti.
Struktura iskaza je:
if ( uslov_jedan ) {
}
else if ( uslov_dva ) {
}
else {
}

37 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Novi dio je:


else if ( uslov_dva ) {
}
Prvim IF iskazom testiramo prvi uslov (18 i manje od 18). Nakon toga navodimo ELSE IF u čijim
zagradama pišemo drugi uslov (od 19 do 39, naprimjer). U posljednjem ELSE iskazu se vrši kod za uslov
koji nije naveden u prethodnim IF...ELSE iskazima. Svaki IF, ELSE IF i ELSE imaju zasebne vitičaste
zagrade, unutar kojih se piše kod koji će se izvršiti ako su uslovi zadovoljeni.
Prije nego napišemo testni kod, naučit ćemo još neke operatore poređenja. Do sada smo koristili
sljedeće:
> (Veće od)
< (Manje od)
>= (Veće ili jednako)
<= (Manje ili jednako)

Postoje još i :
&& ( i )
|| ( ili )
== ( ima vrijednost od )
! ( ne )

Prvi novi operator se označava kao && i koristi se za testiranje više od jednog uslova u isto vrijeme.
Uslov u zagradi će biti tačan samo ako su svi pojedinačni uslovi tačni. Možemo ga koristiti za testiranje
dva opsega godina u isto vrijeme:
else if ( godine > 18 && godine < 40 )
U navedenoj liniji koda želimo provjeriti da li je korisnik stariji od 18 i u isto vrijeme mlađi od 40
godina. Provjeravamo, dakle, koja se vrijednost nalazi unutar varijable godine. Prvi uslov se čita kao
„broj godina je veći od 18“, a drugi uslov se čita kao „broj godina je manji od 40“. Kako koristimo
operator &&, cijelu liniju koda možemo pročitati kao: „Ako je broj godina korisnika veći od 18 i manji
od 40“.

38 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 54. Primjer korištenja if...else if iskaza uz operatora poređenja (&&)

Prekucajte kod sa slike i testirajte ga. Trebali biste moći pogoditi šta će se ispisati i prije nego
pokrenete program. Kako za vrijednost varijable godine imamo 21, poruka else if iskaza će se ispisati.

Vježba 1
Promijenite vrijednost varijable godine sa 21 na 45 i testirajte kod.

Možete dodati koliko god želite else if dijelova koda. Recimo da smo željeli provjeriti da li korisnik ima
tačno 45 ili tačno 50 godina. U ovom primjeru možemo upotrijebiti navedeni novi operator „ili“ (||).
else if (godine == 45 || godine == 50)
Navedenu liniju koda možemo pročitati kao: „Ako korisnik ima 45 godina ili 50 godina“. Else if dio će
se izvršiti ako je bar jedan od ova dva uslova tačan.
Za testiranje da li varijabla ima neku vrijednost koristite dva znaka jednakosti ( == ). Između znakova
jednakosti ne smije biti razmak. U navedenom primjeru uslov godine==45 možemo pročitati kao: „Ako
varijabla godine ima vrijednost 45.“ Operator (||) na tastaturi možete pronaći na slovu „W“. Dok
držite stisnutom tipku ALT GR pritisnite slovo W i pojavit će se znak |.

39 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Modificirajmo kod tako da koristi operator ili (||):

Slika 55. Primjer korištenja if...else if iskaza uz operator poređenja (||)

Kod testirajte tako što ćete mijenjati vrijednost varijable godine. Ako stavite da je vrijednost varijable
45 ili 50, u oba slučaja će se prikazati nova poruka.

Ugnježdeni IF iskazi
IF iskaze možete ugnijezditi. To znači da jedan IF iskaz možete upotrijebiti unutar drugoga. To isto važi
i za IF...ELSE i IF...ELSE IF iskaze. Recimo da želimo saznati da li je korisnik mlađi od 18 i stariji od 16
godina. Želimo prikazati drugačiju poruku za korisnike starije od 16 godina. Započinjemo IF iskazom:
if ( godine < 19 ) {
System.out.println( "18 ili mlađi");
}

Da provjerimo godine preko 16, možemo ugnijezditi još jedan IF iskaz unutar ovog koji već imamo.
Struktura je ista:
if ( godine < 19 ) {
System.out.println( "18 ili mlađi");
if ( godine > 16 && godine < 19 ) {
System.out.println( "Imate 17 ili 18 godina.");
}
}

Prvi IF iskaz prvjerava varijablu na vrijednosti manje od 19. Drugi uslov dodatno sužava rang, za godine
preko 16 i ispod 19. Za ispis različitih poruka možete koristiti i IF...ELSE iskaz:
if ( godine < 19 ) {
if ( godine > 16 && godine < 19 ) {
System.out.println( "Imate 17 ili 18 godina");

40 | S t r a n a
Kulturni centar “Kralj Fahd” Java

}
else {
System.out.println( "16 ili mlađi");
}
}

Jako je bitno da pazite na vitičaste zagrade, jer ako samo jednu izostavite program neće raditi.
Možda se ugniježdeni IF iskazi čine komplikovanim. Zapamtite da ih koristite u slučajevima kada je
potrebno da suzite neki rang vrijednosti.

3.3 Boolean vrijednosti


Boolean vrijednost je vrijednost za koju imate samo dvije opcije: true ili false, yes ili no, 1 ili 0. U Javi
postoji tip podataka kojeg označavamo kao boolean.
boolean podatak = true;
Na prvom mjestu pišemo tip varijable, što je u ovom primjeru boolean (malo slovo „b“). Nakon što
date ime varijabli, imate dvije opcije: da joj dodijelite vrijednost true ili vrijednost false. Uočite da se
i u ovom slučaju dodjela vrijednosti vrši pomoću jednog znaka jednakosti ( = ). Da ste željeli postaviti
uslov i provjeriti da li varijabla ima određenu vrijednost, pisali biste dva znaka jednakosti (==).
Testirajte ovaj jednostavni kod:
boolean podatak = true;
if ( podatak == true) {
System.out.println("Podatak je tačan (true).");
}
else {
System.out.println("Podatak nije tačan (false).");
}

IF iskazom provjeravamo da li varijabla podatak ima vrijednost true. ELSE iskazom provjeravamo da li
varijabla ima vrijednost false. U ovom slučaju nema smisla koristiti ELSE IF, jer nešto je ili tačno ili
netačno, nema treće opcije.
Od logičkih operatora još je ostao operator NOT. Njega koristimo uz boolean vrijednosti. Pogledajte
naredni kod:
boolean podatak = true;
if ( !podatak ) {
System.out.println("Podatak je pogrešan (false)");
}

41 | S t r a n a
Kulturni centar “Kralj Fahd” Java

else {
System.out.println("Podatak je tačan (true)");
}

Jedino po čemu se ovaj kod razlikuje od prethodnog je naredna linija:


if ( !podatak )
Ispred varijable podatak koristimo NOT operator (!). On testira neku vrijednost na negaciju, tj. testira
je na suprotnu vrijednost njenoj trenutnoj vrijednosti. Kako je varijabla podatak podešena na
vrijednost true, !podatak će je testirati na vrijednost false. Da je varijabla podatak bila podešena na
vrijednost false, !podatak bi je testirao na vrijednost true.

3.4 Switch iskaz


Još jedan od načina na koje možete kontrolisati tok izvršavanja vašeg programa je korištenjem switch
iskaza. Ovim iskazom varijablu možete testirati na više vrijednosti. Iskaz switch može biti dobra
alternativa kompleksnim i dugačkim if...else if iskazima. Struktura switch iskaza je:
switch ( test_varijabla ) {
case vrijednost1:
neki kod;
break;
case vrijednost2:
neki kod;
break;
default:
vrijednost3;
}

Započinjemo pisanjem ključne riječi switch. Unutar zagrada navodimo varijablu koju želimo testirati
na određene vrijednosti. Nakon toga pišemo vitičaste zagrade unutar koji se nalazi glavni god za
testiranje. Za svaku vrijednost na koju želite testirati varijablu morate navesti ključnu riječ case. Nakon
case, pišete konkretnu vrijednost na koju želite testirati varijablu:
case vrijednost1:
Nakon vrijednosti pišete dvotačku. Poslije dvotačke navodite kod koji želite da se izvrši u slučaju da
se vrijednost koja se testira podudara sa vrijednošću poslije case riječi. Riječ break, što znači prekid,
se mora pisati poslije svake case linije. Njom osiguravamo izlazak iz switch iskaza kada se pronađe
prva vrijednost koja će se podudarati s test_varijablom.
Vrijednost default koja se piše na kraju je opcionalna. Može se koristiti u slučaju da niste izlistali sve
opcije koje test_varijabla može poprimiti. U tom slučaju ona poprima vrijednost default.

42 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Ubrzo ćemo napisati testni kod. Ako želite, možete kreirati novi projekat, ako ne, samo
zakomentarišite već postojeći kod. Brz način za komentarisanje cijelog napisanog koda je ikona
Comment, koja se nalazi u alatnoj traci. Prvo odaberite kod koji želite zakomentarisati, a zatim kliknite
Comment ikonu:

Slika 56. Comment ikona

Napišite naredni kod:

Slika 57. Primjer korištenja switch iskaza

Prvo definišemo vrijednost koju želimo testirati, a to je varijabla godine, tipa integer. Vrijednost smo
postavili na 20. Switch iskazom ćemo provjeravati šta se nalazi unutar varijable godine. Prilikom ove
provjere prolazit će se kroz svaki case (slučaj). Kada pronađe vrijednost unutar case koda, koja se
podudara s vrijednošću varijable, izvršit će se kod unutar zagrada odgovarajućeg slučaja, a zatim će
se prekinuti izvršavanje switch iskaza (break).
Program možete testirati tako što ćete kucati različite vrijednosti za varijablu godine i provjeravati
rezultat. Korištenjem switch iskaza varijablu možete testirati na samo jednu vrijednost. Dakle, ne
možete napisati:
case (user <= 18):
Možete jedino navoditi vrijednosti redom:
case 1: case 2: case 3: case 4:

43 | S t r a n a
Kulturni centar “Kralj Fahd” Java

U primjeru iznad su navedene vrijednosti od 1 do 4, ali za svaku smo morali napisati pojedinačan case.

Vježba 1
Napišite program koji će prihvatati unos korisnika. Korisnik treba da unese broj koji predstavlja broj
njegovih godina. Program bi trebao pohraniti taj broj, a zatim ga testirati na rang korisnikovih godina:
0 do 10, 11 do 20, 21 do 30, 30 i više. Prikažite poruku u Output prozoru, ovakvog formata:
godine + " je između 21 i 30"
Ako korisnik ukuca 27 za svoje godine, poruka u Output prozoru bi trebala biti:
run:
Unesite svoje godine: 27
27 je između 21 i 30
BUILD SUCCESSFUL (total time: 5 seconds)

Ako korisnik ima 30 ili više godina, možete ispisati poruku: "Imate preko 30 godina."

Pomoć za izradu Vježbe 1


Da biste preuzeli vrijednosti tipa string, koje unese korisnik, koristite naredni kod:
String godine = unos.next( );
Metodu next( ) koristimo za stringove. Korisnik će unijeti broj godina, što je cjelobrojna vrijednost, tj.
integer. Dakle, u ovom slučaju ne možete koristiti metodu next( ), ali postoji njoj slična metoda,
namijenjena unosu integer vrijednosti koju možete koristiti: nextInt( ).

Vježba 2
Ako želite provjeriti varijablu tipa String na neku vrijednost, koristite metodu equals.
String ime = "Bill";
if ( ime.equals( "Bill" ) ) {
//NEKI KOD
}

U kodu iznad smo deklarisali varijablu tipa String i nazvali je ime. Dodijelili smo joj vrijednost "Bill". U
zagradama IF iskaza koristimo ime varijable nakon kojeg slijedi metoda equals. Metodu equals
koristimo da testiramo varijablu ime na vrijednost "Bill", što će u ovom slučaju biti tačno i kod unutar
vitičatih zagrada će se izvršiti. Da smo u prvoj liniji koda varijabli dodijelili ime "William", a ostatak
koda ostavili kakvim jest, poređenje bi vratilo netačan rezultat i kod unutar vitičastih zagrada se ne bi
izvršio.

44 | S t r a n a
Kulturni centar “Kralj Fahd” Java

NAPOMENA: Kada testirate varijablu tipa String na neku vrijednost, vrijednost navedena u zagradi
mora potpuno odgovarati vrijednosti koju testirate. Dakle "Bill" nije isto što i "bill".
Napišite program kojim ćete tražiti od korisnika da izabere jednu od četiri boje: crnu, bijelu, crvenu ili
plavu. Koristite IF...ELSE IF iskaz da ispišete jednu od narednih poruka, u ovisnosti o izboru korisnika:
CRNA: "Moguće je da volite Gotiku :)"
BIJELA: "Vi ste iskrena i neiskvarena osoba :)"
CRVENA: "Vi ste jako zabavna i otvorena osoba :)"
PLAVA: "Vi ste Chelsea fan, zar ne?"

Kada se vaš program izvrši, rezultat u Output prozoru bi trebao izgledati ovako:
run:
Izaberite jednu boju: Crna, Bijela, Crvena, Plava
Crna
"Moguće je da volite Gotiku :)"
BUILD SUCCESSFUL (total time: 8 seconds)

3.5 For petlja


Kao što smo već pomenuli, do sada ste najviše pisali sekvencijalne programe. To znači da se kod
izvršava od vrha ka dnu, te se pri tome svaka linija koda izvršava redom.
U lekciji o IF iskazima ste naučili da se ovakav sekvencijalni tok izvršavanja može promijeniti. Još jedan
način kojim možete promijeniti linearni tok programa je korištenjem petlji. Petljom „tjerate“ program
da se vraća unazad pri izvršavanju. Na ovaj način, iste linije koda možete izvršavati više puta.
Naprimjer, pretpostavimo da želimo sabrati brojeve od 1 do 10. To je moguće vrlo jednostavno
izvršiti, pisanjem koda:
int rezultat = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10;
Ali, ovakav način pisanja nam neće koristiti u slučaju da trebamo sabrati brojeve od 1 do 1000. U
ovakvim slučajevima koristimo petlje. Petljom ćemo više puta prolaziti i izvršavati isti kod dok ne
dođemo do krajnje vrijednosti 1000. Nakon što dostignemo vrijednost 1000, možemo prekinuti
izvršavanje petlje i nastaviti s izvršavanjem koda koji slijedi.
Započet ćemo sa For petljom, jednom od najčešće korištenih. For znači „Za“ i njeno ime bi se moglo
objasniti ovako: „Izvršavaj petlju ZA tačno definisan broj koraka.“
Struktura petlje je:
for ( startna_vrijednost; krajnja_vrijednost; brojač ) {
//VAŠ KOD

45 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Nakon riječi for (mala slova) dolazi par zagrada. Unutar zagrada je potrebno navesti tri stavke, te ih
razdvojiti tačka-zarezom (;), to su: startna vrijednost od koje počinje izvršavanje petlje, krajnja
vrijednost s kojom završava izvršavanje petlje i brojač kojim se broje prolasci kroz petlju.
Unutar vitičastih zagrada navodite kod koji želite da se izvrši više puta. Napisat ćemo jedan primjer.
Napravit ćemo novi projekat i nazvati ga Petlje. Unutar main metode ćemo napisati sljedeći kod:

Slika 58. Primjer korištenja For petlje

Započinjemo deklarisanjem integer varijable, koju smo nazvali prolaz. Zatim deklarišemo još jednu
varijablu naziva kraj_petlje. Varijablu prolaz ćemo koristiti za brojanje prolazaka kroz petlju, dok ćemo
varijablu kraj_petlje koristiti za završnu vrijednost, tj. vrijednost posljednjeg prolaza, nakon kojeg će
se petlja prestati izvršavati. Cilj nam je da ispišemo poruku svaki put kada se petlja izvrši.
Unutar zagrada petlje pišemo kod:
prolaz=0; prolaz<kraj_petlje; prolaz++
Prvi dio govori Javi od kojeg broja želimo započeti izvršavanje petlje. U ovom primjeru počinjemo od
nule. U drugom dijelu imamo uslov:
prolaz < kraj_petlje
Ovaj uslov možemo pročitati kao: „Vrijednost varijable prolaz je manja od vrijednosti varijable
kraj_petlje.“ Uslov je ključni u postavkama petlje, jer će se petlja izvršavati sve dok je on ispunjen.
Petlja u ovom primjeru će se izvršavati sve dok je vrijednost varijable prolaz manja od vrijednosti
kraj_petlje. Posljednji dio petlje je:
prolaz++

46 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Ovim govorimo Javi kako da od početne vrijednosti petlje stigne ka krajnjoj. Želimo prolaze od 0 do
10, što znači da svaki put prolaz moramo uvećati za 1. Kod prolaz++ upravo to radi. U svakom prolazu
uveća varijablu prolaz za 1.
Umjesto prolaz++, mogli smo napisati i:
prolaz = prolaz + 1
S desne strane jednakosti imamo prolaz + 1. Java će dodati 1 na vrijednost koja se nalazi u varijabli
prolaz. Nakon sabiranja, rezultat će se ponovo pohraniti u varijablu prolaz s lijeve strane jednakosti.
Znači da će varijabla s lijeve strane jednakosti biti uvećana za jedan. Ovakvi primjeri se jako često
sreću u programiranju, tako da je bilo logično da će se pojaviti neka kraća verzija koda, kao što je
prolaz++.
Pogledajmo još jedan primjer nevezan za prethodni zadatak:
int broj = 0;
broj++;

Vrijednost varijable broj, nakon što se kod izvrši, će biti 1. Kod koji smo napisali je kraća verzija
narednog koda:
int broj = 0;
broj = broj + 1;

Petljom u našem zadatku postižemo sljedeće:


1. Početna vrijednost petlje je 0
2. Petlja se izvršava sve dok je početna vrijednost manja od 11
3. Do broja 11 dolazimo tako što u svakom prolazu petlje početnu vrijednost uvećamo za 1.

Unutar vitičastih zagrada petlje smo napisali:


System.out.println ("Petlja je u: " +prolaz+ ". prolazu");
U svakom prolazu petlje ćemo ispisati jednu rečenicu. Unutar rečenice će biti vrijednost varijable
prolaz, koja predstavlja broj prolaska kroz petlju i dodatni tekst da poruka izgleda preglednije.

47 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Nakon što pokrenete program, rezultat će biti:

Slika 59. Rezultat izvršavanja koda sa slike 58.

Kada upotrijebimo petlju unutar programa, program se više neće izvršavati linearno, jer kada dođe
do petlje i petlja se izvrši prvi put, program će se vraćati na početak petlje opet i iznova, onoliko puta
koliko smo mu to zadali u varijabli kraj_petlje. Kod koji se nalazi unutar petlje će se izvršiti onoliko
puta koliko bude prolazaka kroz petlju. To, zapravo, i jeste njena svrha. Upotrebljavamo je kada
imamo potrebu da neki dio koda izvršimo više puta.
Napisat ćemo kod koji će poslužiti za sabiranje brojeva od 1 do 10 korištenjem For petlje:

Slika 60. Primjer sabiranja brojeva korištenjem For petlje

48 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Rezultat će biti:

Slika 61. Rezultat izvršavanja koda sa slike 60.

Kod je sličan kodu iz prvog primjera. Deklarisali smo varijable za prvi i posljednji broj, koje će
predstavljati granice ranga brojeva koje želimo sabrati. Dodali smo još jednu varijablu naziva suma u
koju ćemo pohraniti rezultat sabiranja. Varijabla suma će se postepeno uvećavati. Ona neće odmah
poprimiti vrijednost 55, što je krajnji rezultat, nego će se do rezultata doći kumulativno, pri svakom
prolasku kroz petlju.
Unutar zagrada smo promijenili početnu vrijednost. U prvom primjeru je bila 0, u ovom primjeru je 1,
jer želimo započeti sabiranje od broja 1. Takođe, koristimo uslov prvi_broj <= posljednji_broj, jer je
posljednji broj, broj 10, i želimo da se i njegova vrijednost doda na sumu. Uslov smo mogli napisati i
kao prvi_broj < posljednji_broj, ali bi tada pri deklaraciji varijable posljednji_broj njegova početna
vrijednost morala biti 11. Unutar vitičastih zagrada imamo samo jednu liniju koda:
suma = suma + prvi_broj;
Ovom linijom koda se postiže sabiranje brojeva od 1 do 10. Analizu ćemo započeti s desne strane
jednakosti:
suma + prvi_broj;
Prilikom prvog prolaska kroz petlju, na početku je vrijednost varijable suma 0. Vrijednost varijable
prvi_broj je 1. Java će sabrati 0 i 1. Nakon toga će vrijednost pohraniti u varijablu suma. Na kraju prvog
prolaska kroz petlju, vrijednost varijable suma je 1 .
U drugom prolazu, na početku, vrijednost varijable suma je 1. Vrijednost prvi_broj je 2, jer se ona
uvećala kodom unutar zagrade prvi_broj++. Java će sabrati 1 i 2. Rezultat je 3 i on se pohranjuje
ponovo u varijablu suma. Na kraju drugog prolaska kroz petlju i na početku trećeg prolaska kroz petlju
vrijednost sume će biti 3. Ako izmijenite kod For petlje da odgovara kodu na slici, moguće je da ćete
bolje shvatiti kako se vrijednost varijabli mijenja pri svakom prolazu kroz petlju:

Slika 62. Kod za izmjenu For petlje sa slike 60.

49 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Broj prolaza odgovara vrijednosti koja se nalazi unutar varijable prvi_broj. Rezultat će biti:

Slika 63. Rezultat izvršavanja koda nakon izmjene sa slike 62.

Vježba 1
Izmijenite kod tako da korištenjem FOR petlje sabirate brojeve od 1 do 100. Rezultat će biti 5050.

Vježba 2
Koristeći FOR petlju ispišite neparne brojeve između 1 i 10.
Postoje dva načina da riješite ovaj zadatak. Lakši način bi bio pomoću brojača petlje. Dakle, razmislite
za koliko koraka trebate povećati brojač. Brojač je treća stavka unutar zagrada For petlje. Da li je to
1, kao što smo radili u prethodnim primjerima ili neki drugi broj?
Teži način za rješenje ovog zadatka bi bio uz pomoć modulus operatora kojeg do sada nismo učili.
Modulus operator kao rezultat daje ostatak pri dijeljenju. Oznaka za ovaj operator je %, a u
matematičkom zapisu pišemo 10 Mod 3, što znači: ostatak pri dijeljenju sa 3. Dakle, 10 Mod 3 = 1, jer
je ostatak pri dijeljenju 10 brojem 3, broj 1. U programiranju modulus koristimo na sljedeći način:
int ostatak;
int broj = 10
ostatak = broj %3

50 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Broj koji želimo dijeliti pišemo prvi, nakon toga pišemo znak %, pa broj s kojim dijelimo. U varijabli
ostatak, pohranjujemo ostatak pri dijeljenju varijable broj, brojem 3.
U ovom primjeru umjesto broja 3, koristite broj 2. Ako postoji ostatak pri dijeljenju broj je neparan, a
ako ne postoji, broj je paran. Koristite IF iskaz da testirate vrijednost ostatka.

3.6 While petlja


Druga vrsta petlje koju možete koristiti je while petlja. Nešto je jednostavnija za razumjeti od for
petlje. Njena struktura izgleda ovako:
while ( uslov ) {
}

Započinjete pisanjem riječi while, malim slovima. Uslov koji želite testirati navodite u zagradi. Nakon
toga slijede vitičaste zagrade unutar kojih pišete kod. Kao primjer, navest ćemo while petlju kojom
ćemo ispisati neki tekst:
int brojač = 0;
while ( brojač < 5) {
System.out.println("Ispis nekog teksta");
brojač++;
}

Uslov za testiranje navodimo u okruglim zagradama. Želimo da se petlja izvršava sve dok je vrijednost
varijable brojač manja od 5. Unutar vitičastih zagrada prvo se izvršava linija koda kojom se ispisuje
tekst. Nakon toga, uvećavamo brojač za 1. U slučaju da zaboravimo uvećati brojač, dobit ćemo
beskonačnu petlju, jer neće biti načina da varijabla brojač promijeni svoju inicijalnu vrijednost koja je
nula.
U ovom primjeru smo koristili brojač da dođemo do kraja petlje, ali while petlje se mogu koristiti i bez
brojača. Dovoljno je unutar zagrada samo napisati vrijednost koju želimo provjeravati u svakom
prolasku petlje. Naprimjer, možemo napisati petlju koja će se izvršavati sve dok se ne pritisne neka
tipka na tastaturi. Ovakva petlja se često koristi za igrice, kod kojih je dovoljno pritisnuti X na tastaturi
da se petlja prekine. Još jedan primjer u kojem se koristi while petlja je prilikom čitanja tekstualnog
fajla. Prolazi se kroz petlju sve dok se ne dođe do kraja fajla.

51 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Do ... While
Postoji i do...while petlja, koja je jako slična while petlji. Primjer:
int brojač = 0;
do {
System.out.println("Ispisuj tekst");
brojač++;
}
while ( brojač < 5 );
I u ovom slučaju će se petlja izvršavati sve dok je zadovoljen uslov brojač<5, samo je sada uslov
napisan na kraju petlje. Razlika između ove dvije petlje je u tome što se while petlja ne mora izvršiti
ni jednom, jer je uslov prvo što se provjerava kod nje. Ako uslov u prvom pokušaju nije zadovoljen,
while petlja se neće ni jednom izvršiti. S druge strane, do...while petlja će se izvršiti bar jedanput, jer
se uslov provjerava tek nakon prvog prolaza, na samom kraju. Obje petlje možete testirati, tako što
ćete brojaču dodijeliti vrijednost 5. Petlja while se neće izvršiti, te se time neće ništa ni ispisati unutar
Output prozora. Petlja do...while će se izvršiti samo jednom i dobit ćete kao rezultat ispis jedne
poruke.

4. Nizovi u Javi
4.1 Java nizovi
Koncept programiranja, koji je pomalo težak za shvatiti, ali kojeg jednostavno morate savladati ako
se želite ozbiljnije baviti programiranjem, je koncept niza. U ovoj lekciji ćemo naučiti šta su to nizovi i
kako ih korisiti.
Do sada smo pisali primjere u kojima su se nalazile varijable koje su sadržavale samo jednu vrijednost
za neki podatak. Varijable tipa integer su pohranjivale jednu cjelobrojnu vrijednost, a varijable tipa
String su pohranjivale jedan, duži ili kraći tekst. Koristeći nizove pruža nam se mogućnost da
pohranjujemo i više od jedne vrijednosti u varijablu. Niz možete shvatiti kao listu podataka istog tipa.
O nizu možete misliti kao o kolonama unutar, recimo, Excel dokumenta. Možete imati dokument sa
jednom kolonom ili sa više kolona. Jednodimenzionalni niz je niz koji se sastoji od jedne kolone
podataka, a višedimenzionalni niz se sastoji od više kolona podataka. Jednodimenzionalni niz bi
izgledao ovako:

52 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 64. Grafički prikaz jednodimenzionalnog niza

Kao što svaki podatak unutar Excel dokumenta ima svoju tačno određenu poziciju u redu i koloni,
tako i podaci unutar niza u programiranju imaju svoje tačno određene pozicije. Zbog toga kažemo da
se podatak nalazi na određenoj poziciji niza. Na slici iznad, na poziciji 0 se nalazi broj 10, na poziciji 1
broj 14, na poziciji 2 broj 36, itd.
Budući da niz može pohranjivati različite tipove podataka, prilikom njegove deklaracije potrebno je
naglasiti o kojem se tipu radi. U primjeru na slici smo koristili cjelobrojne vrijednosti, tako da bi tip
podataka za ovakav niz bio int. Pored ovog tipa, kao i sa varijablama, možete koristiti String, boolean,
double, itd. Pored tipa podataka Javi morate reći i koliko pozicija će vaš niz imati. Niz bez broja pozicija
deklarišemo ovako:
int[ ] nizBrojeva;
Jedina razlika pri deklaraciji obične int varijable i niza sa int vrijednostima je par uglastih zagrada koji
se navodi poslije tipa za podatke. Java razlikuje niz od obične varijable upravo zahvaljujući uglastim
zagradama. Ime našeg niza u ovom primjeru je nizBrojeva. I nizove, kao i varijable, možete imenovati
kako god želite dok god pazite na pravila imenovanja varijabli koja važe i za nizove.
U navedenom primjeru smo samo naveli da želimo deklarisati niz koji će sadržavati cjelobrojne
vrijednosti. Nismo naveli koliko će pozicija naš niz imati. Da bismo definisali broj pozicija niza, moramo
kreirati novi objekat tipa niz.
nizBrojeva = new int[6];
Započinjemo imenom koje smo dali nizu. Nakon znaka jednakosti, koristimo ključnu riječ new, pa još
jednom pišemo tip podataka koje će niz sadržavati (int). U uglastim zagradama navodimo broj pozicija
koje želimo da naš niz ima.
Deklaraciju niza je moguće napisati i u jednoj liniji koda:
int[ ] nizBrojeva = new int[6];
Nakon što se izvrši ova linija koda, Java će rezervisati 6 pozicija u memoriji, kojima ćemo naknadno
moći dodijeliti podatke. Java će svakoj poziciji dodijeliti default vrijednost, koja će biti nula.

53 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Vrijednost pozicijama niza dodjeljujemo s desne strane jednakosti, kao što smo radili i sa varijablama:
nizBrojeva[0] = 10;
U primjeru iznad, poziciji 0, niza koji se zove nizBrojeva, dodjeljujemo vrijednost 10. Pozicija niza se,
kao što možete vidjeti, navodi unutar uglastih zagrada. Da smo željeli dodijeliti vrijednost 14 poziciji
niza 1, napisali bismo:
nizBrojeva[1] = 14;
Za dodjelu vrijednosti 26, poziciji niza 2, kod bi bio:
nizBrojeva[2] = 36;
Morate razlikovati pozicije brojeva koje smještate u niz i pozicije niza. Treći broj po redu je bio broj
36, dakle u nizu brojeva njegova pozicija je 3, ali u nizu navedenom kodom njegova je pozicija 2, jer
pozicije niza ne počinju od broja 1, nego od broja 0.
Ako unaprijed znate koje ćete vrijednosti dodijeliti nizu, niz možete definisati na sljedeći način:
int[ ] nizBrojeva = { 1, 2, 3, 4 };
Ova metoda nakon znaka jednakosti koristi vitičaste zagrade. Unutar njih kucamo vrijednosti koje
želimo da se nalaze u nizu. Prva vrijednost (1) će se nalaziti na poziciji niza [0], druga vrijednost (2) će
se nalaziti na poziciji niza [1] itd. S lijeve strane jednakosti i dalje koristimo tip + [] za deklaraciju, ali s
desne strane vam više ne treba ključna riječ new. Međutim, ovakva definicija niza se koristi samo za
tipove podataka int, String i char, u suprotnom morate koristiti ključnu riječ new.
Ovakva definicija niza je dozvoljena, jer koristimo tip podataka String:
String[ ] nizStringova = {"Autumn", "Spring", "Summer", "Winter" };
Ovakva definicija niza nije dozvoljena, jer koristimo tip boolean:
boolean[ ] nizBoolean = {false, true, false, true};
Za boolean vrijednosti niz deklarišemo na sljedeći način:
boolean[ ] nizBoolean = new boolean[ ] {false, true, false, true};
Za pristup vrijednosti niza, dovoljno je da ukucate ime niza, nakon kojeg slijedi broj pozicije u uglastim
zagradama:
System.out.println(nizBrojeva[2]);
Navedenom linijom koda će se ispisati vrijednost koja se nalazi na poziciji 2 niza nizBrojeva.

54 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Kreirajmo novi projekat naziva Nizovi:

Slika 65. Primjer korištenja nizova

Nakon pokretanja programa rezultat će biti:

Slika 66. Rezultat izvršavanja programa sa slike 65.

Kod možete testirati tako što ćete mijenjati vrijednost pozicije niza unutar println linije koda.

4.2 Nizovi i petlje


U prethodnoj lekciji smo vidjeli način na koji možemo dodijeliti vrijednosti pozicijama unutar niza:
nizBrojeva[0] = 10;
Ovakav način dodjele vrijednosti pozicijama niza i nije naročito praktičan, jer svaku liniju koda unutar
koje dodjeljujemo broj nizu moramo odvojeno napisati. Šta ako nizu trebamo dodijeliti mnogo
brojeva – naprimjer 50? To znači da bismo trebali 50 puta napisati kod za dodjelu vrijednosti nizu. Da
bismo to izbjegli, možemo koristiti petlju. Naprimjer:

55 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 67. Primjer korištenja For petlje za dodjelu vrijednosti nizu

Deklarisali smo niz koji će pohranjivati 49 cjelobrojnih vrijednosti. Nakon toga pišemo petlju. Obratite
pažnju na uslov petlje:
i < brojeviLutrije.length
Length je svojstvo objekta niz koje vam omogućava da pristupite veličini niza, tj. broju pozicija niza.
Ova petlja će se izvršavati sve dok je vrijednost varijable i, manja od broja pozicija niza.
Za dodjelu vrijednosti svakoj poziciji niza smo koristili liniju koda:
brojeviLutrije[i] = i + 1;
Umjesto fiksne vrijednosti unutar uglastih zagrada, koristimo varijablu naziva i. Varijabla i se u svakom
prolazu petlje uveća za 1. To nam omogućava da pristupimo svakoj poziciji niza koristeći samo
varijablu i. Vrijednost koja se dodjeljuje svakoj poziciji je definisana kao i + 1. Vidimo da je to opet
vrijednost varijable i, uvećana za 1. Kako petlja počinje od vrijednosti 0, a nama je kao prvi broj
potreban broj 1, pomoću i + 1, ćemo ga kreirati. To isto važi i za svaki sljedeći broj niza.
Linijom println u svakom prolasku petlje ispisujemo vrijednost koja se nalazi na trenutnoj poziciji niza,
tako da u Output prozoru možete očekivati 49 linija ispisa, sa brojevima od 1 do 49.
Ako biste željeli napisati program za lutriju, započeli biste kodom kao u našem primjeru. Nakon toga
bi vam bio potreban kod koji će nasumice rasporediti brojeve. Dovoljno bi bilo uzeti prvih 6 iz
nasumično raspoređenih i prikazati ih kao brojeve lutrije. Nakon toga bi vam bio potreban kod za
poređenje korisnikovih brojeva sa brojevima lutrije i dobili biste program za lutriju.

56 | S t r a n a
Kulturni centar “Kralj Fahd” Java

4.3 Sortiranje nizova


Java posjeduje ugrađenu metodu pomoću koje možete sortirati nizove. Da biste koristili ovu metodu,
potrebno je da referencirate biblioteku naziva Arrays. Biblioteku referencirate koristeći import
ključnu riječ. Ovu metodu ćemo isprobati na projektu Nizovi koji smo ranije napisali. Dodajte sljedeću
liniju koda projektu:
import java.util.Arrays;
Sada bi vaš kod trebao izgledati ovako:

Slika 68. Korištenje biblioteke Arrays u kodu

Nakon importa biblioteke Arrays, možete koristiti metodu sort. Kod za metodu je:
Arrays.sort(nizBrojeva);
Kako se metoda nalazi u biblioteci Arrays, to je prva riječ koju morate navesti. Nakon toga, iz padajuće
liste odaberite sort, ili jednostavno ukucajte. Unutar zagrada navodite ime niza kojeg želite koristiti
za sortiranje. Uočite da samo navodimo ime niza, ovaj put bez uglastih zagrada.
To bi bilo to. Jedna linija koda je dovoljna za sortiranje niza. Sada ćemo napisati primjer, da vidimo
kako to u praksi izgleda.

57 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 69. Primjer za korištenje sort metode

Petlja for će se izvršiti šest puta. Svaki put pri prolasku petlje ćemo ispisati vrijednost koja se nalazi na
jednoj poziciji niza. Rezultat u Output prozoru će biti:

Slika 70. Rezultat izvršavanja koda sa slike 69.

Kao što možete primijetiti, naš početni niz je sada uređen po rastućem redosljedu.
Sortiranje u opadajućem redosljedu je nešto teže. Možete napisati svoj kod za sortiranje ili pretvoriti
niz u Integer objekte, a zatim iskoristiti funkciju iz biblioteke Collections. Ako vam je potrebno
sortiranje niza, u opadujećem redosljedu možete koristiti naredni kod, mada je za početnike
kompleksan i za potrebe ovog kursa nije potrebno da ga znate:

58 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 71. Kod za sortiranje niza u opadajućem redoslijedu

4.4 Nizovi i stringovi


U nizove, pored brojeva, možete pohraniti i stringove. To radite na isti način kao i sa brojevima:
String[ ] nizStringova = new String[5] ;
nizStringova[0] = "Ovaj";
nizStringova[1] = "niz";
nizStringova[2] = "predstavlja";
nizStringova[3] = "niz";
nizStringova[4] = "stringova";

Kodom iznad smo definisali niz koji će imati 5 pozicija. Nakon toga, svakoj poziciji niza dodjeljujemo
jedan string. Sada ćemo napisati petlju kojom ćemo proći kroz sve članove niza i ispisati njihove
vrijednosti:

59 | S t r a n a
Kulturni centar “Kralj Fahd” Java

int i;
for ( i=0; i < nizStringova.length; i++ ) {
System.out.println(nizStringova[i] );
}

Petlja će se izvršavati sve dok je vrijednost varijable i manja od broja elemenata niza nizStringova.
Napravite novi projekat i ukucujte kod sa slike:

Slika 72. Primjer korištenja stringova unutar niza

Rezultat izvršavanja programa će biti:

Slika 73. Rezultat izvršavanja koda sa slike 72.

Moguće je sortirati i niz stringova, na način na koji ste sortirali i niz cijelih brojeva. Metodom sort, kao
što ste vidjeli u primjeru sa brojevima, sortiramo elemente niza u rastućem redosljedu, što kod slova
znači da će "aa" biti izlistano prije "ab". Prilikom poređenja stringova Java koristi Unicode karaktere.
To znači da će velika slova biti izlistana prije malih. Testirajte sljedeći kod:

60 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 74. Primjer korištenja stringova unutar niza uz sort metodu

Rezultat izvršavanja programa će biti:

Slika 75. Rezultat izvršavanja koda sa slike 74.

Iako smo sortirali niz po rastućem alfabetskom redosljedu, riječ „Ovaj“ je na prvom mjestu. Očekivali
smo da će se na prvom mjestu pojaviti riječ „niz“. To bi bio rezultat izvršavanja programa da su sva
slova mala. Promijenite riječ „Ovaj“ u „ovaj“ i ponovo pokrenite program. Rezultat u Output prozoru
će biti:

Slika 76. Rezultat izvršavanja koda sa slike 74. nakon izmjene

Nakon promjene slova, riječ „ovaj“ se sada nalazi u sredini. O stringovima će još biti riječi u narednim
lekcijama, a do tada pokušajte sami uraditi sljedeće vježbe:

61 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Vježba 1
Definišite niz unutar kojeg će se nalaziti sljedeće vrijednosti u navedenom redosljedu: 23, 6, 47, 35,
2, 14. Napišite program kojim ćete izračunati prosjek ovih 6 brojeva. Koristite integer vrijednost za
rezultat.

Vježba 2
Koristeći vrijednosti iz prethodnog zadatka ispišite najveći broj u nizu.

Vježba 3
Koristeći vrijednosti iz prethodnog zadatka ispišite samo neparne brojeve.

4.5 Višedimenzionalni nizovi


Do sada smo radili sa jednodimenzionalnim nizovima, što znači da smo koristili podatke nizova koji su
bili pohranjeni unutar samo jedne kolone. Podaci se mogu nalaziti i u više kolona. Naprimjer, ako
unutar Excel dokumenta imate 6 redova i 5 kolona, vaš dokument može pohraniti 30 brojeva. Prikaz
bi mogao biti kao na slici:

Slika 77. Grafički prikaz višedimenzionalnog niza

Podatke sa slike ne možete pohraniti koristeći jednodimenzionalni niz, ali možete koristeći
višedimenzionalni niz. Višedimenzionalni niz definišemo na sljedeći način:
int[ ][ ] nizBrojeva = new int[6][5];
Višedimenzionalni niz se definiše na isti način kao i jednodimenzionalni, s razlikom u korištenju dva
para uglastih zagrada. Prvi par uglastih zagrada se koristi za redove, a drugi za kolone. U primjeru
iznad želimo definisati niz koji će imati 6 redova i 5 kolona. Prilikom kreiranja višedimenzionalnog niza
najbitnije je da dobro razlikujete redove i kolone i ne pogriješite prilikom definisanja niza. Sada ćemo
napisati kod kojim ćemo popuniti podatke u prvom redu dokumenta sa slike:
nizBrojeva[0][0] = 10;
nizBrojeva[0][1] = 12;
nizBrojeva[0][2] = 43;
nizBrojeva[0][3] = 11;
nizBrojeva[0][4] = 22;

62 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Prvi red je označen kao red 0. Brojevi za kolone se kreću od 0 do 4, što znači da imamo 5 kolona, za 5
elemenata koje ćemo u njih pohraniti. Za popunjavanje drugog reda podacima, kod bi bio:
nizBrojeva[1][0] = 20;
nizBrojeva[1][1] = 45;
nizBrojeva[1][2] = 56;
nizBrojeva[1][3] = 1;
nizBrojeva[1][4] = 33;

Vidimo da su brojevi za kolone ostali isti, dok je broj reda naveden kao 1.
Da bi se pristupilo elementima višedimenzionalnog niza, tehnika koju ćemo koristiti je petlja unutar
petlje. Napisat ćemo kod za pristup brojevima iz našeg Excel dokumenta.

Slika 78. Dio koda za ispis brojeva sa slike 77.

Prvu petlju koristimo za redove, a drugu za kolone. Prilikom prvog prolaza kroz petlju, vrijednost
varijable i će biti 0. Kod koji se nalazi unutar prve for petlje je predstavljen drugom petljom. Cijeli kod
druge petlje će se izvršiti za vrijednost varijable i=0. Vrijednosti varijabli „i“ i „j“ se koriste za pristup
elementima niza:
nizBrojeva[ i ][ j ]
U kodu sa slike iznad nedostaje dio dodjele elemenata nizu. Mi ćemo napisati kod za prva dva reda, a
vi ćete za vježbu ispisati sve elemente iz našeg Excel dokumenta.

63 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 79. Kod za ispis prva dva reda brojeva sa slike 77.

Rezultat izvršavanja navedenog koda će biti:

Slika 80. Rezultat izvršavanja koda sa slike 79.

Vježba 1
Završite prethodni program, tako što ćete ispisati sve vrijednosti iz Excel dokumenta. Izgled Output
prozora bi trebao biti:

Slika 81. Rezultat rješenja Vježbe 1

64 | S t r a n a
Kulturni centar “Kralj Fahd” Java

4.6 Liste nizova


Nizove koristimo kada tačno znamo koliko elemenata želimo u njih pohraniti. U slučaju da ne znamo
tačan broj elemenata, koristit ćemo liste nizova (engl. ArrayList). ArrayList je dinamička struktura
podataka, što znači da se elementi mogu i dodavati i brisati iz nje. Nizovi s kojima smo do sada radili
su predstavljali statičku strukturu podataka, jer nije bilo mogućnosti da nakon jednom definisane
veličine niza to nekako promijenimo.
Da biste definisali ArrayList, potrebno je importovati paket iz biblioteke:
import java.util.ArrayList;
Nakon toga kreiramo novi ArrayList objekat:
ArrayList listTest = new ArrayList( );
Uočite da ovoga puta ne koristimo uglaste zagrade kao kod nizova.
Nakon kreiranja novog ArrayList objekta, koristeći metodu add dodajemo elemente:
listTest.add( "prvi element" );
listTest.add( "drugi element" );
listTest.add( "treći element" );
listTest.add( 7 );

U zagradama metode add navodimo elemente koje želimo dodati u ArrayList. Bitno je naglasiti da se
u ArrayList dodaju samo objekti. Prva tri elementa koja smo dodali su String objekti. Četvrti element
je broj, ali ovaj broj je tip Integer objekta, a ne obični primitivni tip podatka int.
Elementima liste pristupamo pomoću metode get, uz korištenje indexa elementa:
listTest.get( 3 )
Navedenom linijom koda ćemo pristupiti elementu liste, koji se nalazi na poziciji 3. Kako brojevi
indeksa započinju od nule, pristupit ćemo četvrtom elementu liste na ovaj način.
Elemente liste možemo i izbrisati. Pri tome možemo koristiti broj indeksa ili vrijednost elementa liste:
listTest.remove(2);
listTest.remove( "drugi element" );

Uklanjanjem elementa liste, promijenit će se njena veličina, tako da trebate biti pažljivi ako nakon
uklanjanja želite pristupiti nekom elementu. Ako uklonimo drugi element liste, onda će lista
sadržavati samo 3 elementa. Pokušaj pristupa elementu koji ima indeks 3 će u ovom slučaju rezultirati
greškom. Prilikom prolaska kroz niz koristili smo for petlju, koju u ovom slučaju ne možemo koristiti.
Za prolazak kroz elemente liste koristi se klasa naziva Iterator. Ova klasa se nalazi u biblioteci:
import java.util.Iterator;

65 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Nakon toga pripajamo ArrayList novom Iterator objektu:


Iterator it = listTest.iterator( );
Ovim definišemo novi Iterator objekat naziva it koji ćemo koristiti za prolazak kroz elemente liste
naziva listTest. Razlog zbog kojeg koristimo ovaj objekat su njegove metode next i hasNext. Njih
možemo koristiti u kombinaciji sa while petljom na sljedeći način:
while ( it.hasNext( ) ) {
System.out.println( it.next( ) );
}

Povratna vrijednost metode hasNext je Boolean. Vrijednost Boolean će biti false, ako nema više
elemenata liste unutar ArrayList objekta. Metodom next možemo prolaziti kroz elemente liste.
Napisat ćemo novi program kojim ćemo testirati do sada naučeno:

Slika 82. Primjer korištenja Iterator objekta

Linija koda kojom ispisujemo sve elemente liste je:

66 | S t r a n a
Kulturni centar “Kralj Fahd” Java

System.out.println("Cijela lista elemenata je: " + listTest);


Na ovaj način brzo možete prikazati sve elemente liste, ako vam zatreba.
Nakon pokretanja programa, rezultat koji ćemo dobiti je:

Slika 83. Rezultat izvršavanja koda sa slike 82.

5. Java String metode


5.1 Java i stringovi
Stringovi za razliku od integer i double varijabli predstavljaju objekte. To znači da postoji mnogo više
opcija za rad sa stringovima nego za rad sa običnim varijablama. Isto važi i za druge primitivne tipove
podataka, kao što su: boolean, byte, single, char, float, long i short. Dakle, samo stringovi predstavljaju
objekte, a sa svim drugim podacima je mogućnost manipulacije znatno ograničena.
Prije nego naučimo opcije za rad sa stringovima, reći ćemo nekoliko osnovnih informacija o tome šta
stringovi predstavljaju.
String predstavlja niz Unicode karaktera koje pohranjujemo u neku varijablu. Kao primjer uzet ćemo
naredni string:
String nekiTekst = "Bill";
Ovom komandom kažemo Javi da kreira string objekat koji će se sastojati od četiri karaktera: "B", "i",
"l", "l". U Unicode zapisu ovi karakteri su predstavljeni kao: \u0042, \u0069, \u006c, \u006c. Unicode
vrijednosti se pohranjuju kao heksadecimalni brojevi. Velika slova (od A do Z) se pohranjuju koristeći
vrijednosti od \u0041 do \u005a, a mala slova (od a do z) se pohranjuju koristeći vrijednosti od \u0061
do \u007a.
Metode za manipulaciju stringovima koje ćemo obraditi u ovoj lekciji su: toUpperCasse, toLowerCase,
compareTo, IndexOf, endWith, startsWith, Substring, Equals, charAt, trim, valueOf

67 | S t r a n a
Kulturni centar “Kralj Fahd” Java

5.2 Metode: toUpperCase i toLowerCase


Pretvaranje stringova teksta u velika slova ili mala slova je jako jednostavno budući da za to već imate
ugrađene Java metode: toLowerCase i toUpperCase.
Kreirajmo novi projekat i napišimo sljedeći kod:

Slika 84. Primjer korištenja metode toUpperCase()

Prve dvije linije koda nam služe za deklaraciju String varijable, dodjeljivanje nekog teksta ovoj varijabli,
te zatim ispis tog teksta. Trećom linijom koda deklarišemo varijablu rezultat tipa String u koju ćemo
pohraniti povratnu vrijednost nakon izvršenja toUpperCase metode. Na četvrtoj liniji vršimo
konverziju stringa.
rezultat = mijenjanjeSlova.toUpperCase( );
Prilikom korištenja ove metode prvo kucamo ime varijable koju želimo kovertovati. U ovom primjeru
ime varijable je mijenjanjeSlova. Nakon kucanja tačke izlistat će se sve metode koje su vam dostupne
u radu sa stringom. Iz liste ćemo odabrati toUpperCase. Nakon metode potrebno je još ukucati par
zagrada.
Nakon što Java sva mala slova stringa zamijeni velikim, rezultat će se pohraniti u varijablu naziva
rezultat.

68 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Nakon što pokrenemo program, u Ouput prozoru će se prikazati:

Slika 85. Rezultat izvršavanja koda sa slike 84.

Nismo morali novi konvertovani string da pohranimo u varijablu rezultat. Dovoljno bi bilo napisati i
ovo:
System.out.println(mijenjanjeSlova.toUpperCase( ) );
U ovom slučaju Java će direktno da izvrši konverziju i ispiše rezultat, bez potrebe da rezultat smješta
u neku varijablu.
Ako imate string napisan velikim slovima i želite da izvršite pretvaranje stringa u mala slova, koristite
metodu toLowerCase. Ova metoda se koristi na potpuno isti način kao i metoda toUpperCase.

5.3 Metoda: compareTo


Stringove možete porediti. Prilikom poređenja Java će koristiti heksadecimalne vrijednosti, a ne
vrijednosti konkretnih slova. Naprimjer, ako želite porediti riječ "Ape" sa riječju "App" da vidite koja
će po alfabetskom redosljedu doći prva, koristite Javinu ugrađenu metodu compareTo.
Kreirat ćemo novi projekat i dodati kod, kao na slici:

Slika 86. Primjer korištenja metode compareTo

69 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Deklarisali smo dvije varijable, unutar kojih će se nalaziti riječi "Ape" i "App". Metodu za poređenje
koristimo u sljedećoj liniji koda:
rezultat = riječ1.compareTo(riječ2);
Vrijednost koju vraća metoda compareTo je broj. Taj broj može biti manji od nule, veći od nule ili
može imati vrijednost nula. Ako riječ1 dolazi prije riječi2, onda će vraćena vrijednost biti manja od
nule. Ako riječ1 dolazi poslije riječi2, onda će vraćena vrijednost biti veća od nule. Ako su riječ
identične, vraćena vrijednost će biti nula.
Prema tome, potrebno je da deklarišete varijablu u koju će se pohraniti povratna vrijednost metode
compareTo. U našem primjeru to je varijabla rezultat. Koristeći IF iskaz testiramo varijablu rezultat na
vrijednost koja je u nju pohranjena.
Prilikom poređenja jednog stringa sa drugim stringom, Java poredi njihove heksadecimalne
vrijednosti, a ne prava slova. Kako velika slova imaju manju heksadecimalnu vrijednost od malih slova,
veliko slovo"A" u riječi "App" će biti prije malog slova "a" u riječi "ape". Testirajte kod tako što ćete
riječ "Ape" promijeniti u "ape". Rezultat u Output prozoru će biti: „Riječ1 je veća od riječi2“, što znači
da će Java pozicionirati riječ "ape" poslije riječi "app" po alfabetskom redosljedu.
Ovaj problem možete riješiti korištenjem metode compareToIgnoreCase. Ova metoda ignoriše velika
i mala slova. Korištenjem ove metode, riječ "ape" će se alfabetski nalaziti prije riječi "App".

5.4 Metoda: indexOf


Metodu indexof koristimo kada želimo da lociramo karakter ili manji string unutar većeg stringa. Ovu
metodu možemo koristiti da provjerimo da li se unutar stringa koji predstavlja e-mail adresu nalazi
karakter @. Naprimjer:

Slika 87. Primjer korištenja metode indexOf

70 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Kako želimo da provjerimo da li se unutar e-mail adrese nalazi karakter @, prvo ćemo deklarisati
varijablu tipa char i dodijeliti joj vrijednost '@'. Nakon toga deklarišemo varijablu tipa String, kojoj kao
vrijednost dodjeljujemo neku e-mail adresu. Potrebna nam je i varijabla naziva rezultat koja će biti
tipa int. Razlog za odabir int tipa za ovu varijablu je to što metoda indexOf vraća vrijednost tipa
integer. Ta vrijednost će biti pozicija, dakle cijeli broj, unutar stringa e-mail. To se postiže sljedećom
linijom koda:
rezultat = email.indexOf(et);
S desne strane jednakosti prvo pišemo string koji želimo pretražiti. Nakon tačke, s liste odabiramo
metodu indexOf, ili je jednostavno ukucamo. Postoji više opcija za dodjelu argumenata ovoj metodi.
Jedna od njih je da unutar zagrada ukucate ime varijable u kojoj je pohranjen karekter, a možete
ukucati i sam karakter. U ovom primjeru smo kao argument dodijelili naziv varijable. Java, kao rezultat
izvršavanja metode, vraća poziciju karaktera @ koja se pohranjuje u varijablu rezultat.
Nakon pokretanja koda, rezultat će biti 4. Možete pomisliti da je karakter @ četvriti po redu, što nije
tačno. Kako indeksi počinju od broja 0, indeks 4 zapravo predstavlja 5. karakter u stringu.
Ako se karakter ne nalazi unutar stringa koji pretražujete, metoda indexOf će kao rezultat vratiti -1.
Kod možete ponovo testirati tako što ćete izbrisati @ iz e-mail adrese. Rezultat će biti -1.
Rezultat -1 možete iskoristiti unutar koda, prilikom ispitivanja varijable. Napisat ćemo kod sa IF
iskazom koji će testirati sadržaj varijable rezultat.

Slika 88. Primjer korištenja indexOf metode uz testiranje rezultata

Ako je rezultat metode indexOf -1, možemo napisati kod kojim upozoravamo korisnika na
neispravnost unosa e-mail adrese, a u suprotnom možemo nastaviti s izvršavanjem programa.
Metodu indexOf možemo koristiti da testiramo sadržaj stringa i na više karaktera. Sljedećim
programom ćemo testirati da li se e-mail adresa završava sa ".com":

71 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 89. Korištenje metode indexOf za testiranje stringa na više karaktera

Kod je skoro identičan prethodnom kodu koji smo napisali. U ovom primjeru smo umjesto char
varijable deklarisali String varijablu, koja će sadržavati ".com".
I u ovom primjeru metoda će kao rezultat vratiti -1, u slučaju da tekst koji tražimo nije unutar stringa.
Ako se tekst nalazi unutar stringa, indexOf će vratiti poziciju prvog karaktera teksta koji tražimo. To
je u ovom slučaju tačka, koja se nalazi na 10. poziciji, što znači da joj je indeks 9.
Moguće je specificirati i startnu poziciju od koje želimo da pretraga započne. U našem primjeru
pretragu za ".com" možemo započeti poslije karaktera @. Napisati ćemo kod koji će prvo locirati
poziciju @ karaktera, a nakon toga će tu poziciju iskoristiti za pretragu ".com".

Slika 90. Korištenje metode indexOf uz određenu startnu poziciju pretrage

72 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Nova linija koda je:


int rezultat = email.indexOf(dotCom,pozicija);
Jedina razlika je dodatni argument u zagradama indexOf metode. I dalje koristimo isti tekst koji želimo
pronaći, ali sada imamo startnu poziciju za pretragu. Ova pozicija se nalazi unutar istoimene varijable.
Prvo smo locirali @ karakter koristeći indexOf metodu, a zatim rezultat pohranili u varijablu naziva
pozicija. U drugoj liniji koda sa indexOf metodom, Java koristi vrijednost varijable pozicija koja će
pretstavljati poziciju za početak pretrage.

Ends With … Starts With


Za prethodni program smo mogli koristiti i ugrađenu metodu endsWith:
Boolean završetak = email.endsWith( dotCom );
Prilikom korištenja metode endsWith, potrebno je deklarisati varijablu tipa Boolean, jer ova metoda
vraća vrijednosti true ili false. String koji pretražujete se piše prije metode, a tekst koji želite pronaći
se piše unutar zagrada metode. Ako se tekst nalazi unutar stringa, rezultat će biti true, u suprotnom
će biti false. Možete upotrijebiti IF...ELSE iskaz za provjeru vrijednosti:
if (završetak == false ) {
System.out.println("Email adresa nije validna");
}
else {
System.out.println("Email adresa je validna");
}

Metoda stratsWith se koristi na sličan način:


Boolean start = email.startsWith( dotCom );
Povratna vrijednost i ove metode je true ili false.

5.5 Metoda: substring


Metodu substring koristimo kada želimo izdvojiti jedan dio teksta iz nekog drugog teksta. U našem
primjeru sa e-mail adresom mogli smo, naprimjer, izdvojiti posljednjih pet karaktera i provjeriti da li
su jednaki tekstu "co.uk".
Da bismo bolje razumjeli rad substring metode napisat ćemo program kojim ćemo izmijeniti dvije
riječi. Zamijenit ćemo prva dva slova prezimena sa prva dva slova imena. Recimo da imamo ime i
prezime:
"Bill Gates"

73 | S t r a n a
Kulturni centar “Kralj Fahd” Java

U ovom imenu i prezimenu ćemo zamijeniti "Ga" od "Gates" sa "Bi" iz "Bill", tako da će rezultat biti
"Bites". "Bi" od "Bill" će biti zamijenjeno sa "Ga" od "Gates", tako da ćemo dobiti "Gall". Ime i prezime
koje ćemo ispisati će biti: "Gall Bites".
Za većinu operacija ćemo upotrebljavati metodu substring. Ova metoda radi na sljedeći način:
String imePrezime = "Bill Gates";
String prvaSlovaImena = "";
prvaSlovaImena = imePrezime.substring( 0, 2 );

Prvo definišete string s kojim želite raditi, u primjeru "Bill Gates". Ime varijable u kojoj se nalazi ovaj
string se navodi prvo, a nakon njega slijedi substring metoda. Postoje dva načina za upotrebu ove
metode, koja se razlikuju po njenim argumentima. U primjeru iznad koristimo dva broja: 0 i 2. Ovo
znači da će uzimanje karaktera započeti od pozicije 0 i završiti na poziciji 2. Ova dva karaktera koja
metoda substring dobavi, pohranjuju se u varijablu naziva prvaSlovaImena. Ako uvijek želite ići do
kraja stringa u pravcu desno, možete i ovako napisati:
String test = imePrezime.substring(2);
Ovoga puta u zagradama smo napisali samo jedan broj. Sada će Java započeti od drugog karaktera
stringa imePrezime, i uzeti sve karaktere od pozicije 2 do kraja stringa, u pravcu - desno.
Kreirajmo novi projekat i ukucajmo sljedeći kod:

Slika 91. Primjer korištenja metode substring

Nakon pokretanja programa, rezultat u Output prozoru će biti:

Slika 92. Rezultat izvršavanja koda sa slike 91.

Vidimo da smo korištenjem metode substring uspjeli izdvojiti prva dva slova imena "Bill".

74 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Da bismo dobavili dva karaktera, koristili smo dvije pozicije kao argumente metode, početnu i krajnju.
Možete pomisliti da bi za izdvajanje "Ga" iz "Gates" kod mogli napisati ovako:
= imePrezime.substring(5, 2);
I u ovom slučaju želimo izdvojiti dva karaktera, ali ovaj put stratna pozicija 5 će reći Javi da započne
od slova "G" iz "Gates". Opet ponavljamo, prva pozicija stringa je 0, a ne 1. Dakle, potrebno je početi
pod pozicije 5 i izdvojiti 2 karaktera.
Ako pokrenete kod sa = imePrezime.substring(5,2); pojavit će se greška, jer drugi argument unutar
zagrada ne predstavlja broj karaktera koje želite izdvojiti, nego poziciju unutar stringa na kojoj želite
završiti uzimanje karaktera. Ako napišemo broj 2 za krajnju poziciju, govorimo Javi da preuzimanje
karaktera završi sa pozicijom 2. Kako nije moguće ići unazad od pozicije 5 do pozicije 2, pojavit će se
greška.
Ako je brojanje za riječ "Bill" započelo od pozicije 0, na poziciji 2 se nalazi slovo "l". Bitno je naglasiti
da metoda substring počinje prije karaktera na određenoj poziciji, ne poslije njega.
Da bismo izdvojili "Ga" iz "Gates", mogli smo napisati:
imePrezime.substring( 5, imePrezime.length( ) - 3 );
Drugi argument je predstavljen kao dužina stringa imePrezime minus 3 karaktera. Pod dužinom
stringa se podrazumijeva broj njegovih karaktera. "Bill Gates" zajedno sa razmakom ima 10 karaktera.
Ako oduzmemo 3, ostaje nam 7 karaktera. Drugim riječima, kažemo metodi substring da započne
izdvajanje od pozicije 5 i završi sa pozicijom 7.
Ovakav način će dati željeni rezultat za ime i prezime "Bill Gates", ali neće za ime "Billy Gates". Mi
želimo da program radi za bilo koje dvije riječi koje odaberemo za ime i prezime, tako da ćemo morati
upotrijebiti neku drugu metodu.
Možemo iskoristiti metodu indexOf koju smo naučili u prethodnoj lekciji i odrediti poziciju razmaka
između imena i prezimena. 2 karaktera prezimena koja želimo izdvojiti će se uvijek nalaziti odmah
poslije razmaka. Napisat ćemo kod koji će nam omogućiti da uzimamo prva dva karaktera nakon
razmaka.
U te svrhe ćemo koristiti metodu indexOf:
int razmak = imePrezime.indexOf(" ");
Razmak definišemo tako što pod navodnicima u zagradama jednom ukucamo razmak. Podsjetimo se
da će metoda indexOf vratiti cijeli broj, koji će predstavljati poziciju na kojoj se prvi put pojavio
razmak.
Testirajmo kod. Dodajte dodatne dvije linije koda, tako da izgleda kao na slici:

75 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 93. Primjer lociranja razmaka korištenjem indexOf metode

Nakon pokretanja programa, rezultat će biti:

Slika 94. Rezultat izvršavanja koda sa slike 93.

Razmak se, dakle, nalazi na poziciji 4 unutar stringa. Ovu informaciju ćemo iskoristiti da bismo izdvojili
prva dva karaktera prezimena "Gates", ali će ovaj način dati tačan rezultat i sa bilo kojim drugim
prezimenom. Javi kažemo da je startna pozicija prvog karaktera kojeg želimo uzeti odmah nakon
razmaka, a posljednja je nakon sljedeća dva karaktera:
imePrezime.substring( razmak + 1, (razmak+ 1) + 2 )
Dva argumenta substring metode su:
razmak + 1, (razmak + 1) + 2
Želimo započeti od prvog karaktera nakon razmaka, što je definisano kao (razmak + 1) i završiti dva
karaktera poslije, što je definisano kao (razmak + 1) + 2.
Dopunite kod da izgleda kao na slici:

76 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 95. Primjer izdvajanja dva slova prezimena korištenjem metode substring

Rezultat u Output prozoru će biti:

Slika 96. Rezultat izvršavanja koda sa slike 95.

Do sada smo izdvojili "Bi" iz Bill i "Ga" iz Gates. U nastavku lekcije ćemo izdvojiti ostale karaktere
imena i prezimena i zamijeniti im mjesta.
Za preostale karaktere imena ćemo opet koristiti metodu substring:
String ostalaSlovaImena = "";
ostalaSlovaImena = imePrezime.substring( 2, razmak );
System.out.println(ostalaSlovaImena);

Za preostale karaktere prezimena koristimo sljedeći kod:


String ostalaSlovaPrezimena = "";
ostalaSlovaPrezimena = imePrezime.substring((razmak + 1) + 2, imePrezime.length() );
System.out.println(ostalaSlovaPrezimena);

Obratimo pažnju na argumente metode substring. Za izdvajanje preostalih karaktera imena


koristimo:
2, razmak
Ovim govorimo Javi da započne od pozicije 2, te da uzima karaktere sve do pozicije razmaka. S
prezimenom je kod nešto komplikovaniji:

77 | S t r a n a
Kulturni centar “Kralj Fahd” Java

(razmak + 1) + 2, imePrezime.length( )
(razmak + 1) + 2 je startna pozicija trećeg karaktera prezimena. Želimo završiti preuzimanje karaktera
sa zadnjom pozicijom stringa, koji zapravo predstavlja njegovu dužinu, pa koristimo metodu length().
Sa dopunom bi vaš kod trebao izgledati kao na slici:

Slika 97. Kod za zamjenu slova imena i prezimena

Output je:

Slika 98. Rezultat izvršavanja koda sa slike 97.

Nakon što smo izdvojili sve karaktere, potrebno je da ih ispremiještamo i spojimo. Koristit ćemo
lančano uvezivanje:

Slika 99. Kod za lančano uvezivanje imena i prezimena

78 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Dodajte ove nove linije koda i pokrenite program. Rezultat će biti kao na sljedećoj slici:

Slika 100. Rezultat izvršavanja koda sa slike 97. uz dopunu koda

Program možemo modificirati tako što ćemo tražiti od korisnika da unese svoje ime i prezime. Novi
program će izgledati kao na slici, uz dodatak koda za unos sa tastature:

Slika 101. Dopuna koda sa slike 97. (dodatak koda za unos sa tastature)

79 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Pokrenite program, ukucajte svoje ime i prezime i pritisinete Enter. Rezultat će biti kao na slici:

Slika 102. Rezultat izvršavanja koda sa slike 101.

5.6 Metoda: equals


Da biste provjerili da li su dva stringa ista, koristite metodu equals. Napišimo sljedeći kod:

Slika 103. Primjer upotrebe equals metode

Navedenim kodom želimo provjeriti da li je email1 adresa jednaka email2 adresi. Prvo deklarišemo
dvije String varijable, jednu za email1, a drugu za email2. Na trećoj liniji koda deklarišemo varijablu
tipa Boolean, jer metoda equals kao rezultat vraća true ili false vrijednost. Na četvrtoj liniji koda
koristimo metodu equals:
jednakiStringovi = email1.equals(email2);
U zagradama metode equals navodite jedan string koji poredite, a drugi string pišete prije metode
equals. Java će kao rezultat poređenja vratiti vrijednost true, ako su stringovi jednaki ili vrijednost
false, ako su stringovi različiti. Korištenjem IF iskaza provjeravamo koju je od ove dvije vrijednosti
metoda equals vratila.

80 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Bitno je naglasiti da metodu equals možete koristiti samo za poređenje objekata. U ovom slučaju je
to bilo dozvoljeno jer su stringovi, zapravo, objekti. Metodu equals ne možete koristiti za, naprimjer,
poređenje int varijabli. Kao primjer, navest ćemo kod koji je neispravan:
int broj1 = 12;
int broj2 = 13;
Boolean jednakiBrojevi = false;
jednakiBrojevi = broj1.equals(broj2);

Varijabla int predstavlja primitivni tip podataka, a ne objekat. Primitivni tip podataka int možete
pretvoriti u objekat Integer, na sljedeći način:
int broj1 = 12;
Integer broj1 = new Integer(broj1);

U navedenom kodu primitivni tip int pretvaramo u Integer objekat. Obratite pažnju da koristimo
ključnu riječ new, čija se upotreba uvijek veže uz objekte. U zagradama pišemo primitivni tip int koji
želimo pretvoriti u objekat.

5.7 Metoda: charAt


Korištenjem pozicije uz metodu charAt možete saznati koji se karakter nalazi na određenoj poziciji.
Testirajmo sljedeći kod:
String email = "test@me.com";
char aChar = email.charAt( 4 );
System.out.println( aChar );

Navedenim kodom testiramo koji se karakter nalazi na 4. poziciji email stringa. Povratna vrijednost
ove metode će biti tip char:
char aChar = email.charAt( 4 );
Rezultat izvršavanja koda će kao output dati karakter @. U zagradama se navodi pozicija unutar
stringa koju želimo provjeriti. U primjeru želimo saznati koji se karakter nalazi na 4. poziciji e-mail
adrese. Brojanje počinje od broja 0, tako da kao rezultat dobijamo @.
Jedna od korisnih upotreba metode charAt je testiranje unosa korisnika. Naprimjer, možemo tražiti
od korisnika da ukuca Y (kao Yes) za nastavak izvršavanja programa ili N ( kao No) za izlazak iz
programa. Napišimo sljedeći kod:

81 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 104. Primjer upotrebe charAt metode

Slika 105. Rezultat izvršavanja koda sa slike 105.

Klasu Scanner ne možemo koristiti da direktno pohranimo jedan karakter u varijablu tipa char. Zbog
toga koristimo next() metodu da bismo prihvatili sljedeći string koji korisnik unese. Postoji next
integer, next long, next double pa i next Boolean, ali next char ne postoji. Čak i kada korisnik unese
samo jedan karakter, on se smatra stringom, a ne char varijablom. Zbog toga za izdvajanje karaktera
iz stringa koristimo metodu charAt, čak i kada znamo da će korisnik unijeti samo jedan karakter:
char karakter = odgovor.charAt( 0 );
Ovu liniju koda možemo pročitati kao: „Dobavi karakter koji se nalazi na poziciji 0, stringa naziva
odgovor.“ Na kraju dodajemo IF iskaz da provjerimo koju od dvije ponuđene vrijednosti je korisnik
unio sa tastature. Primijetite da u uslovu karakter =='N', koristimo jednostruke navodnike.

82 | S t r a n a
Kulturni centar “Kralj Fahd” Java

5.8 Metoda replace


Metoda replace se koristi kada želite zamijeniti karaktere stringa nekim drugim stringom. Uzmimo
kao primjer sljedeću rečenicu:
"Gdje su tvoje knjge?"
Riječ knjge je nepravilno napisana pa ćemo je zamijeniti riječju knjige. Napišimo sljedeći kod:

Slika 106. Primjer upotrebe metode replace

Output je:

Slika 107. Rezultat izvršavanja koda sa slike 106.

Postoji više načina za korištenje metode replace, a razlikuju se samo po načinu korištenja argumenata
unutar zagrada. U ovom primjeru, jednu riječ zamjenjujemo drugom. Na engleskom jeziku riječ
replace ima značenje – zamijeni, tako da liniju koda tekst.replace ("knjge","knjige") možemo pročitati
kao: „Zamijeni riječ knjge koja se nalazi unutar teksta, riječju knjige.“
Moguće je zamijeniti i samo jedan karakter:
tekst.replace( '£', '@' )
Kod iznad možemo pročitati: „Zamijeni karakter £, karakterom @.“

83 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Trim
Za brisanje razmaka, tabova, novih redova, tj. svih karaktera koje ne možemo vidjeti, koristi se
metoda trim. Metoda je jednostavna za korištenje:
String razmak = " prazan prostor ";
razmak = razmak.trim( );

Metoda trim se piše poslije stringa iz kojeg želite izbrisati razmake. Karakteri za razmak koji se nalaze
prije riječi prazan i poslije riječi prostor će biti izbrisani. Uvijek je dobro prilikom preuzimanja unosa
korisnika, koristiti metodu trim, da budete sigurni da ste izbrisali sve suvišne karaktere koje je korisnik
nehotice mogao unijeti.

5.9 Ispis formatiranih stringova


Stringovi teksta se prije ispisa mogu i formatirati korištenjem printf komande. Ova komanda upravlja
korištenjem karaktera koji se koriste za formatiranje. Korištenjem ove komande stringovi teksta će
biti formatirani u ovisnosti o zadatim specifikacijama. Recimo da želimo da naš ispis podataka izgleda
uredno, kao na sljedećoj slici:

Slika 108. Rezultat izvršavanja koda koji koristi formatiranje stringova

Prva kolona je poravnata - lijevo, a druga kolona je poravnata - desno. Kod za naslove je:
String naslov1 = "Ime_ispita";
String naslov2 = "Ocjena_ispita";
System.out.printf( "%-15s %15s %n", naslov1, naslov2);

Da biste kreirali ispis kolone koja je lijevog poravnanja potrebno je koristiti simbol %, nakon toga znak
minus, broj karaktera koje želite poravnati lijevo, te malo slovo s, tako da ''%-15s'' predstavlja 15
karaktera lijevog poravnanja. Za desno poravnanje se koriste ista pravila, s tim da izostavljate znak
minus prije broja karaktera. Za kreiranje novog reda koristite %n. Uočite da je sve karaktere potrebno
pisati pod navodnicima.

84 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Kada završite sa specifikacijama formatiranja, navodite tekst koji želite formatirati. U našem primjeru,
na naslov1 će biti primijenjena pravila prvih specifikacija formatiranja (lijevo poravnanje), a na
naslov2 pravila drugih specifikacija (desno poravnanje).
U tabelama ćemo navesti pravila koja možete koristiti za formatiranje teksta:
Formatiranje stringa neograničenog broja
"%s"
karaktera
Formatiranje stringa ograničenog broja
"%15s"
karaktera-desno poravnanje
Formatiranje stringa ograničenog broja
"%-15s"
karaktera-lijevo poravnanje

Tabela 1. Formatiranje stringova

Za formatiranje cijelih brojeva koristi se karakter "d", a za formatiranje realnih brojeva karakter "f".
Formatiranje stringa neograničenog broja integer
"%d"
karaktera.
Formatiranje stringa ograničenog broja integer karaktera.
"%4d" Ako nema dovoljno integera prostor lijevo će biti
popunjen razmacima.
Formatiranje stringa ograničenog broja integer karaktera.
"%04d" Ako nema dovoljno integera prostor lijevo će biti
popunjen nulama.

Tabela 2. Formatiranje cijelih brojeva

Formatiranje stringa neograničenog


"%f" broja float karaktera. Formatiranje na 6
decimala.
Formatiranje stringa neograničenog
"%.2f" broja float karaktera. Formatiranje na
dvije decimale.
Formatiranje na dvije decimale, s tim da
cijeli string zauzima 10 karaktera. Ako
"%10.2f"
nema dovoljno brojeva, prostor lijevo će
biti popunjen razmacima.

Tabela 3. Formatiranje realnih brojeva

85 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Testirajmo naredne kodove za formatiranje stringa, integera i floata:

Kod1:
System.out.printf("%s %d %n", "Total:", 34573);
Output1:

Slika 109. Rezultat izvršavanja koda - Kod1

Kod2:
System.out.printf("%s %10d %n", "Total:", 34573);
Output2:

Slika 110. Rezultat izvršavanja koda – Kod2

86 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Kod3:
System.out.printf("%-10d %10d %n", 223334, 34573);
Output3:

Slika 111. Rezultat izvršavanja koda – Kod3

Kod4:
System.out.printf("%010d %10d %n", 223334, 34573);
Output4:

Slika 112. Rezultat izvršavanja koda – Kod4

Kod5:
System.out.printf("%f %n", 345.73);
Output5:

Slika 113. Rezultat izvršavanja koda – Kod5

87 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Kod6:
System.out.printf("%.2f %n", 34.573);
Output6:

Slika 114. Rezultat izvršavanja koda – Kod6

Tabela sa početka lekcije je izgledala ovako:

Slika 115. Rezultat izvršavanja koda sa slike 116.

Sada imamo dovoljno znanja i da napišemo kod kojim ćemo prikazati podatke, kao u navedenoj tabeli:

88 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 116. Ispis formatiranog teksta

6. Java metode
U prethodnim lekcijama ste vidjeli neke od ugrađenih metoda koje možete iskoristiti u svom kodu. U
ovoj lekciji ćemo učiti kako da pišete svoje metode.
Struktura metode
Metoda predstavlja skup linija koda koje obavljaju određen zadatak. Metode imaju određena pravila
po kojima ih morate pisati. Metoda ima zaglavlje i tijelo. Unutar zaglavlja definišete koju će vrijednost
metoda vratiti ( vrijednost int, double, String, itd.). U zaglavlju je potrebno navesti i ime metode.
Metodi možete prosljediti argumente s kojima će ona manipulisati, a te argumente pišete unutar
zagrada. Unutar tijela metode pišete kod.

89 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 117. Struktura metode

Prvo navodimo tip povratne vrijednosti metode, koji je u našem primjeru int. Nakon tipa metode
kucamo razmak, pa pišemo ime metode. U ovom primjeru metoda se zove total. U zagradama
navodimo argumente koje prosljeđujemo metodi iz nekog drugog dijela koda. U ovom primjeru
metodi prosljeđujemo varijablu tipa int koju smo nazvali broj.
Kod metode treba izdvojiti od drugog koda u programu, te zbog toga koristimo vitičaste zagrade.
Obratite pažnju na ključnu riječ return. Return na engleskom jeziku znači vrati i tom riječju se
označava povratna vrijednost koju će metoda vratiti programu na dalje korištenje, nakon što se izvrši
kod unutar metode. Tip povratne vrijednosti mora biti isti kao tip označen prvom rječju prije imena
metode. Poslije return riječi ne možete navesti string, ako je definisanje metode počelo riječju int.
Nekada neće biti potrebe da metoda ima povratnu vrijednost. Prisjetite se prethodne lekcije i metode
trim. Možda ćete željeti da se metoda trim izvrši i uradi neki zadatak, ali da ne vraća nikakvu
vrijednost. Metoda koja ne vraća nikakvu vrijednost započinje ključnom riječju void. Za metode čija
je povratna vrijednost void, što znači ništa, ne koristite ključnu riječ return. Primjer:

Slika 118. Primjer metode koja ne vraća vrijednost

Sve što ova metoda radi je ispis nekog teksta. Nije potrebno da ima povratnu vrijednost, jer ne vrši
nikakve proračune, nakon kojih bismo rezultat eventualno mogli upotrijebiti negdje drugo unutar
programa.
Takođe, nije obavezno ni da metoda prima argumente. Primjer metode koja nema argumenata i ne
vraća nikakvu vrijednost po završetku:

90 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 119. Primjer metode koja ne vraća vrijednost i ne prima argumente

Primjer metode koja ne prima argumente, ali kao rezultat vraća vrijednost tipa integer:

Slika 120. Primjer metode koja vraća vrijednost tipa int i nema argumente

Sve i ako metoda ne prima nikakve argumente, ne smijete izostaviti zagrade nakon njenog imena, jer
to predstavlja grešku sintakse.

6.1 Pozivanje metoda


Metode se neće izvršavati sve dok ih ne pozovete. Dodat ćemo još jednu klasu projektu. Sve metode
ćemo pisati unutar ove klase, da ne bismo pretrpali main klasu. O značenju klasa ćemo učiti u
narednim lekcijama.
Kreirat ćemo novi projekat naziva Metode:

Slika 121. Kreiranje novog projekta naziva Metode

Da biste dodali novu klasu projektu, kliknite na File iz NetBeans Menija, a zatim izaberite New File. U
sekciji Categories odaberite Java, a u sekciji File Types odaberite Java Class. Zatim kliknite Next. U
drugom koraku dajte ime klasi. Mi ćemo je nazvati MojeMetode.

91 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 122. Kreiranje nove klase naziva MojeMetode

Sada unutar projekta Metode imamo dvije klase: Metode i MojeMetode. Možete primijetiti da u
drugoj klasi koju smo kreirali nema main metode. Vidimo samo naziv paketa, ime klase i par vitičastih
zagrada. Sada ćemo klasi dodati jednu od metoda koje smo prethodno napisali:

Slika 123. Dodavanje koda klasi MojeMetode

Ovu metodu smo na početku lekcije napisali i rekli smo da ona ne prima nikakve argumente, te je
zbog toga sadržaj zagrada prazan. Metoda se zove total i ima povratnu vrijednost tipa integer. Metoda
izvršava jednostavan zadatak sabiranja 10+10 i rezultat pohranjuje u varijablu naziva vrijednost.
Upravo ova vrijednost će biti povratna vrijednost naše metode, što je navedeno u liniji koda sa return.
Kako sabiramo dvije cjelobrojne vrijednosti i rezultat koji će se pohraniti u varijablu vrijednost će biti
cijeli broj, tj. integer. Povratna vrijednost je dakle integer, a to je upravo ono što smo prvo naveli
prilikom imenovanja metode (int). Dakle, naša metoda je ispravno napisana.
Bitno je naglasiti da varijablu vrijednost ne može vidjeti ni jedna druga metoda, pa prema tome ne
može joj ni pristupiti. Bilo koja varijabla koja se deklariše unutar tijela metode je lokalna za tu metodu
i nijedan drugi dio programa joj neće moći pristupiti.
Da bismo pozvali metodu koju smo kreirali, otvorit ćemo prozor naziva Metode unutar kojeg se nalazi
main metoda. Metodu total ćemo pozvati iz tijela main metode.
Da bi se omogućilo pozivanje metoda koje se nalaze u nekoj izdvojenoj klasi, potrebno je prije svega
kreirati objekat te klase. Dodajmo sljedeći kod main metodi:
MojeMetode test1 = new MojeMetode();

92 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 124. Kreiranje objekta klase MojeMetode

Prilikom kreiranja novog objekta klase započinjete imenom te klase, u našem primjeru to je ime
MojeMetode. Možete ovo shvatiti kao tip objekta kojeg kreiramo, kao što smo za tip varijable koristili
int, String, double, itd. Nakon razmaka kucamo ime za novi objekat koji kreiramo, a to je u našem
primjeru test1. NetBeans podcrta objekat da vam ukaže na objekte koje ste eventualno kreirali, a
niste ih nikada unutar koda iskoristili. To je razlog zbog kojeg je ime objekta podcrtano. Čim uradimo
nešto s njim, linija će nestati.
Nakon toga pišemo znak jednakosti, pa ključnu riječ new. Ova riječ znači novi i koristi se za kreiranje
novog objekta neke klase. Nakon riječi new, kucamo razmak, a potom ime klase iz koje želimo kreirati
novi objekat. To je naša klasa MojeMetode( ). Nakon imena klase morate pisati par okruglih zagrada
i završiti liniju koda tačka-zarezom.
Nakon što smo kreirali novi objekat test1 iz klase MojeMetode( ), moći ćemo pristupiti metodi total,
koja se nalazi unutar klase MojeMetode( ). Metodi total pristupamo iz main metode. Sljedeća linija
koda predstavlja poziv metode:
int rezultat = test1.total();

Slika 125. Kod za pozivanje metode total()

U jednoj liniji koda deklarišemo varijablu naziva rezultat i pozivamo metodu na izvršavanje. Varijabla
rezultat je tipa integer, da bi se podudarala sa povratnom vrijednošću metode total. Nakon znaka
jednakosti pišemo ime objekta i čim ukucamo tačku, dobit ćemo naredni prikaz:

93 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 126. Vidljivost metode total()

Vidimo da se u listi nalaze sve metode koje objekat test1 može koristiti, a među njima je i metoda
total(). Možete primijetiti da neke metode na listi imaju argumente unutar zagrada, a neke ne.
Metoda total() ne prima nikakve argumente, te su njene zagrade prazne. Povratna vrijednost ove
metode se vidi s desne strane prikaza (int).
Dvostrukim klikom dodajte metodu kodu. Naposljetku ćemo dodati println liniju koda, da ispišemo
vrijednost koju će nam vratiti metoda total() i da se uvjerimo da kod radi kako smo željeli.

Slika 127. Kod za ispis rezultata metode total()

Nakon pokretanja programa, prikaz u Output prozoru će biti:

Slika 128. Rezultat izvršavanja koda sa slike 127.

Prilikom poziva metodi koja vraća neku vrijednost, morate prvo obratiti pažnju na vrijednost koju
metoda vraća, jer ćete tu vrijednost morati dodijeliti novoj varijabli na nekom drugom mjestu u kodu.
Tip te nove varijable i tip povratne vrijednosti metode moraju biti isti. U našem primjeru, oba tipa su
bila int.
Nakon kreiranja objekta, metoda se mora izlistati poslije tačke. U slučaju da se ne izlista, potrebno je
da provjerite kod i pronađete grešku.

94 | S t r a n a
Kulturni centar “Kralj Fahd” Java

U prethodnom primjeru povratna vrijednost metode total je bila tipa int, te smo je dodijelili varijabli
vrijednost koja je takođe bila tipa int. Ali, šta ako želimo da pozovemo metodu koja nema povratne
vrijednosti, čija je povratna vrijednost void? To ćemo pokazati u nastavku. Otvorit ćemo ponovo klasu
MojeMetode i dodati joj naredni kod:

Slika 129. Dodavanje metode ispisTekst() klasi MojeMetode

Novu metodu smo nazvali ispisTeksta(). Unutar zagrada nema argumenata, jer joj ne prosljeđujemo
nikakve vrijednosti. Sve što ona radi je ispis teksta u Output prozoru.
Nakon što dodate ovu novu void metodu, ponovo otvorite klasu Metode i dodajte liniju koda na kraj:
test1.ispisTeksta();
Čim ukucate tačku, metodu biste trebali vidjeti na listi:

Slika 130. Vidljivost metode ispisTekst()

Obje metode koje smo do sada napisali su izlistane. Njihove povratne vrijednosti int i void su
navedene s desne strane.
Kako je metoda ispisTeksta() void metoda, nije potrebno da deklarišete varijablu unutar main
metode, prije njenog pozivanja, jer ona ne vraća nikakvu vrijednost. Dovoljno je da ukucate ime

95 | S t r a n a
Kulturni centar “Kralj Fahd” Java

objekta test1 i da izaberete metodu s liste, a Java će nakon toga izvršiti kod koji smo napisali u metodi
ispisTeksta().
Pokrenite kod i rezultat će biti kao na slici:

Slika 131. Rezultat izvršavanja koda sa slike 129.

6.2 Prosljeđivanje vrijednosti metodama


Metodi prosljeđujemo neku vrijednost ili vrijednosti, kada je potrebno da ih ona koristi da bi izvršila
neki zadatak. Ove vrijednosti zovemo argumentima metode i pišemo ih unutar okruglih zagrada.
U klasi MojeMetode dodat ćemo i treću metodu:

Slika 132. Dodavanje još jedne metode total klasi MojeMetode

Uočite da sada u kodu imamo dvije metode istog imena – total. Metode se razlikuju po broju
argumenata koje prihvataju, jedna ne prihvata argumente, a druga prihvata jedan argument.
Mogućnost da metodama dajete ista imena, sve dok im je broj argumenata različit, Java dozvoljava.
Ova pojava se naziva method overloading. Možete pisati koliko god želite metoda s istim imenom, a
sa različitim povratnim vrijednostima. Ono što se ne smije desiti je i isto ime metode i ista vrsta
argumenata. Dakle, ne možete imati dvije total metode, koje vraćaju int i primaju int za argumente.

96 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Naprimjer, ovo nije dozvoljeno napisati:


int total( int broj ) {
int vrijednost = broj + 20;
return vrijednost;
}

int total( int broj ) {


int rezultat = broj + 50;
return rezultat;
}

Iako metode izvršavaju različit kod, zaglavlja su im potpuno isto napisana, a to nije dozvoljeno.
Prije nego pokrenemo kod i testiramo novu metodu, dodat ćemo par komentara direktno iznad nje:

Slika 133. Dodavanje komentara iznad metode total

Čim počnete kucati komentar, pojavit će se dvije vrijednosti automatski. To su @param i @return.
@param je skraćeno od parametar i to je vrijednost koja se nalazi u zagradama metode. Nekada ćete
u literaturi nailaziti na naziv parametri metoda, a nekada na argumenti metoda. Misli se na isto.
Metodi prosljeđujemo vrijednost tipa integer, a zatim toj istoj proslijeđenoj vrijednosti dodajemo broj
20. Metoda vraća zbir ove dvije vrijednosti.
U main metodi ćemo napisati sljedeću liniju koda:
int rezultat2 = test1.total(30);

97 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Čim ukucate tačku nakon objekta test1, pojavit će se lista. Kliknite na metodu total(int broj). Vidjet
ćete prikaz komentara kojeg smo napisali:

Slika 134. Prikaz komentara metode total

Ako na nekom kodu radi više programera možete pretpostaviti koliko je bitno da se na ovakav način
dokumentuje kod. Ako ste napisali neku kompleksnu metodu, te pri tom unutar komentara pojasnili
šta ona treba da izvršava, olakšat ćete posao nekom drugom programeru. Smatra se dobrom praksom
kvalitetno dokumentovanje koda.
Nakon posljednjih izmjena, main metoda će izgledati ovako:

Slika 135. Izgled main metode sa svim izmjenama

Broj 30, koji se nalazi unutar zagrada nove total metode, će biti proslijeđen metodi total i pohranjen
u varijablu broj, koja se nalazi u zaglavlju, unutar zagrada metode.

98 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 136. Prosljeđivanje vrijednosti metodi

Nakon što se vrijednost prosljedi metodi, ona može početi sa izvršavanjem koda.
Dodat ćemo naredbu println liniju koda main metodi:
System.out.println( "Rezultat druge total metode je: " + rezultat2 );
Rezultat u Output prozoru će biti:

Slika 137. Rezultat izvršavanja koda sa slike 135.

Naša nova total metoda je sabrala proslijeđenu vrijednost 30, sa vrijednošću 20, te rezultat prosljedila
varijabli, rezultat2, main metode, koji smo ispisali na kraju.

6.3 Prosljeđivanje višestrukih vrijednosti


U prethodnoj lekciji smo naučili kako metodi proslijediti jednu vrijednost. Metodi je moguće
proslijediti i više vrijednosti i to će biti tema ove lekcije. Dodajte sljedeću metodu klasi MojeMetode:

Slika 138. Metoda ispisTekst koja prima dva argumenta

Metoda koju smo napisali će kao rezultat ispisati neku poruku u Output prozoru. Ona prima dvije
vrijednosti, prvu tipa String, a drugu tipa integer. Prilikom poziva ove metode u zagradama ćemo kao
argumente morati prosljediti vrijednosti tipa String i integer, jer to je ono što metoda očekuje.

99 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Redoslijed ovih argumenata je bitan. Ako unutar zagrade prvo napišete vrijednost integer, a zatim
String, pojavit će se greška. Novu metodu ćemo pozvati iz klase Metode. Dopisati ćemo narednu liniju
koda u tijelu main metode:
test1.ispisTekst( "Rezultat= ", rezultat2);
I u ovom primjeru bi metoda trebala biti izlistana unutar NetBeans liste:

Slika 139. Vidljivost metode ispisTekst

Metoda koju ćemo odabrati je ispisTekst(string tekst, int broj). Vidimo da je njena povratna vrijednost
void. Sada će kompletirana metoda main, sa svim metodama koje smo u ovom poglavlju kreirali
izgledati kao na slici:

Slika 140. Metoda main sa dvije metode naziva ispisTekst

Dvije vrijednosti koje prosljeđujemo metodi razdvajamo zarezom. Primijetite da je druga vrijednost
zapravo varijabla rezultat2, a ne neka konstantna cjelobrojna vrijednost. Prilikom definisanja metode
ispisTekst (String tekst, int broj), drugom argumentu smo dali ime broj. Dakle, ime varijable pri
definiciji metode i ime varijable koja joj se naknadno prosljeđuje ne moraju biti ista, samo je bitno da
su vrijednosti istog tipa.

100 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Pokrenite program i rezultat će biti kao na slici:

Slika 141. Rezultat izvršavanja koda sa slike 140.

O metodama ćete dodatno učiti i u narednoj lekciji koja se tiče klasa, koje predstavljaju glavno težište
objektno orjentisanog programiranja.

7. Klase
U ovoj lekciji ćemo naučiti kako da pišete svoje Java klase i kreirate objekte iz njih. Nešto ste do sada
vjerovatno i shvatili o klasama, s tim da ćemo u ovoj lekciji mnogo detaljnije sve objasniti. Razlika
između klase i objekta je jednostavna, ali apstraktna. Kada napišete kod koji predstavlja klasu, on
nema nikakvu funkciju sve dok iz klase ne kreirate objekat. Objekat je nešto s čim imamo mogućnost
da radimo, dok klasa samo opisuje objekat.
Prilikom kreiranja klase, pišete kod koji će imati neki specifičan zadatak. Taj zadatak se može odnositi
na zaposlenike neke kompanije, ali ne u isto vrijeme i na prodaju kompanije. Zadatke u vezi sa
prodajom kompanije bismo izdvojili u drugu klasu. Klasu koja bi predstavljala zaposlenike možete
iskoristiti i u drugim projektima.
Prilikom analiziranja podataka koji se trebaju nalaziti u jednoj klasi, uvijek se trebate pitati, da li je
nešto u toj klasi suvišno i da li je neke podatke bolje izdvojiti u neku drugu klasu.
U ovoj lekciji ćemo obraditi primjer koji se odnosi na ispite. Podaci koji mogu da se odnose na neki
ispit mogu biti različiti. U našem primjeru, bit će potrebno da znamo ime osobe koja polaže ispit, koji
ispit polaže, maksimalni broj bodova i ocjenu.
Kreirat ćemo novi projekat i nazvati ga DetaljiIspita. Paket ćemo nazvati ispiti.

Slika 142. Kreiranje novog projekta DetaljiIspita

101 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Kreirat ćemo još jednu dodatnu klasu koja će upravljati podacima u vezi sa ispitom. Kliknite File iz
Menija na vrhu, te odaberite New File. Pod kategorijama odaberite Java, a pod tipovima fajlova
odaberite Java Class. Kliknite Next.

Slika 143. Kreiranje nove klase

Na sljedećem ekranu upišite ime klase: Student. NetBeans će sada kreirati drugu klasu u projektu.
Možete izbrisati komentare.

Slika 144. Kreiranje nove klase naziva Student

102 | S t r a n a
Kulturni centar “Kralj Fahd” Java

7.1 Varijable instance


U prethodnoj lekciji smo objašnjavali varijable koje se nalaze unutar metoda. Varijable koje
deklarišemo unutar metoda su dostupne samo tim pojedinačnim metodama. Dakle, druge metode
ne mogu da im pristupe. Zbog toga ih zovemo lokalne varijable.
Međutim, moguće je deklarisati varijable i izvan metoda da bi ih sve druge metode unutar iste klase
mogle vidjeti i koristiti. Ovako definisane varijable zovemo varijable instance. Njih ne deklarišemo
ništa drugačije nego bilo koje druge varijable koje smo do sada deklarisali. Našoj novoj Student klasi
dodat ćemo sljedeće četiri varijable:

Slika 145. Deklaracija varijabli instance

Deklarišemo četiri varijable tipa String. Kako imena varijabli sugerišu, u njima ćemo pohranjivati
vrijedosti: ime studenta, ime ispita koji student polaže, broj bodova koje student osvoji na ispitu i
ocjena koju dobije. Ove četiri varijable će moći koristiti sve metode koje napišemo unutar klase, te se
zbog toga za njih kaže da im je vidljivost globalnog tipa.
Da vidimo šta zapravo predstavlja ta globalna vidljivost, otvorit ćemo DetaljiIspita klasu unutar koje
se nalazi main metoda. U main metodi napišite jednu liniju koda kojom ćete kreirati objekat Student
klase.

Slika 146. Kreiranje objekta klase Student

U prethodnim lekcijama ste već imali priliku da vidite kako se kreira objekat iz klase korištenjem new
ključne riječi. Objekat će se zvati student1, tip objekta je Student, što znači da je kreiran iz klase koja
se zove Student.

103 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Na sljedećoj liniji koda ćemo ukucati ime varijable (student1), a zatim ćemo napisati tačku. Čim
napišemo tačku, NetBeans će izlistati listu metoda i svojstava koje objekat student1 može koristiti.

Slika 147. Vidljivost varijabli instance

Na listi možemo vidjeti četiri varijable koje smo deklarisali unutar klase Student. U kontekstu klase
ove varijable zovemo atributima klase. Činjenica da su ove varijable uopće izlistane znači da su one
globalno vidljive. Da su lokalne varijable, uopće se ne bi nalazile na listi.
Varijablama klase, tj. atributima klase možete dodijeliti vrijednosti. Dodajte sljedeći kod main metodi:

Slika 148. Korištenje varijabli instance unutar main metode

Iz liste smo odabrali atribut ime_ispita i dodijelili mu vrijednost “Java“. U narednoj liniji koda
dobavljamo vrijednost atributa ime_ispita iz student1 objekta. Tu vrijednost pohranjujemo u varijablu
naziva ispit, a zatim vrijednost ispisujemo u Output prozoru. Nakon izvršavanja koda, u Output
prozoru će pisati “Java“.
Dakle, četiri varijable koje smo deklarisali mogu koristiti obje klase iz paketa ispiti.
Međutim, nije dobra ideja da varijable imaju globalnu vidljivost. Kroz neko vrijeme možete izgubiti
trag o tome šta se u njima pohranjuje, što će debagiranje koda učiniti kompleksnijim. Smatra se
dobrom praksom da se vidljivost varijabli instance što je moguće više smanji.

104 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Da biste suzili vidljivost varijable na samo određenu klasu, potrebno je koristiti ključnu riječ private
ispred deklaracije varijable. Izmijenite kod u Student klasi da izgleda kao na slici:

Slika 149. Korištenje modifikatora private

Sada samo iz klase Student možete pristupiti ovim varijablama. Da biste se uvjerili, vratite se u main
metodu. Vidjet ćete upozorenja i crvene linije kojima se označavaju greške.

Slika 150. Nakon upotrebe modifikatora private ne možemo pristupiti varijablama instance

Izbrišite posljednje tri linije koda. Ponovo ukucajte student1. i obratite pažnju na prikaz liste:

Slika 151. Nakon upotrebe modifikatora private ne možemo pristupiti varijablama instance

Kao što možete vidjeti, na listi se više ne pojavljuju varijable klase Student. Njihova vidljivost više nije
globalna, jer smo ispred deklaracije svake varijable dopisali ključnu riječ private, što im je suzilo
vidljivost na nivo klase Student unutar koje su deklarisane.

7.2 Konstruktor klase


Kako smo varijable učinili privatnim, moramo pronaći drugi način da im dodijelimo vrijednosti. Jedan
od načina je korištenjem konstruktora (engl. constructor). Konstruktor je metoda koju možete

105 | S t r a n a
Kulturni centar “Kralj Fahd” Java

koristiti da dodijelite inicijalne vrijednosti atributima klase. Nakon kreiranja objekta, prva metoda
koju Java poziva je upravo konstruktor. Tako da, kod koji napišete u konstruktoru će se izvršiti odmah
poslije kreiranja objekta. Nije potrebno da vršite pozivanje konstruktora, kao što to radite s drugim
metodama. Konstruktor je posebna metoda koja se automatski poziva nakon kreiranja novog objekta.
Ono što je karakteristično za konstruktor je da ima isto ime kao klasa. Napravimo konstruktor za klasu
Student:

Slika 152. Konstruktor klase Student

Vidimo da je ime konstruktora isto kao i ime klase. Za razliku od običnih metoda, konstruktor ne mora
da vraća nikakvu vrijednost, ali može da prima vrijednosti kao argumente unutar zagrada. Preko
konstruktora možemo pohraniti vrijednosti u atribute klase:

Slika 153. Pohranjivanje vrijednosti u varijable instance korištenjem konstruktora

U primjeru smo unutar zagrada konstruktora upisali dvije varijable tipa String. U kodu smo vrijednosti
argumenata ime i bodovi dodijelili varijablama ime_studenta i broj_bodova. Ovo će se odraziti na
proces kreiranja novog objekta. Prilikom kreiranja novog objekta, bit će potrebno da upišete dva
stringa unutar zagrada.
Student student1 = new Student ( "Bill Gates", "A" );
Nakon kreiranja objekta, vrijednosti "Bill Gates" i "A" će se prosljediti konstruktoru.

106 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Dobra ideja je i da se unutar konstruktora dodijele fiksne vrijednosti atributima klase. Nakon kreiranja
objekta ove vrijednosti će se upisati u atribute. Dodajte sljedeći kod konstruktoru:

Slika 154. Dodjela fiksnih vrijednosti atributima klase

Sve četiri varijable klase će sada imati svoje default vrijednosti, kada god se kreira klasa Student. Te
default vrijednosti će biti pohranjene unutar varijabli sve dok im ne dodijelimo neku drugu vrijednost.
Primijetite kako u ovom primjeru nismo prosljedili nikakve argumente konstruktoru.

107 | S t r a n a
Kulturni centar “Kralj Fahd” Java

7.3 Pristup varijablama instance


Nakon dodjeljivanja default vrijednosti, dodat ćemo metodu kojom ćemo izmijeniti vrijednosti
atributa. Napišite naredni kod unutar Student klase:

Slika 155. Definisanje imprezime metode kojom mijenjamo vrijednost varijable

Novoj metodi smo dodijelili ime imeprezime. Ona kao argument prima jednu vrijednost tipa String,
koja se zove punoime. Metoda je jednostavna i ne obavlja neki značajan posao. Mogli smo napisati i
mnogo kompleksniju metodu, kojom bismo provjeravali greške, velika i mala slova, prazne stringove,
itd. Njome se dodjeljuje vrijednost atributu ime_studenta, a ona kao povratnu vrijednost vraća
upravo vrijednost koja je dodijeljena atributu. Kada pozovemo ovu metodu, ona će obrisati default
vrijednost koja se nalazi u atributu ime_studenta i dodijeliti mu novu vrijednost. Ono što se nalazi
unutar varijable punoime će biti ta nova vrijednost atributa ime_studenta. Otvorite klasu DetaljiIspita
i upišite naredne linije koda:
String sIme = Student.imeprezime("Bill Gates");
System.out.println( sIme );

108 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 156. Poziv metode imeprezime() iz klase Student

Unutar main metode pozivamo metodu imeprezime() koja pripada Student klasi. Metodi
prosljeđujemo vrijednost "Bill Gates". Ova vrijednost postaje nova vrijednost atributa ime_studenta.
Nakon toga, String varijabla sIme poprima vrijednost ime_studenta koju je vratila metoda
imeprezime() nakon što je završila sa izvršavanjem. Ispisuje se vrijednost sIme varijable.
Kao metode koje smo kreirali u prethodnim lekcijama i metoda imeprezime() se nalazi na NetBeans
listi. Međutim, uočite da konstruktor metoda nije izlistana.

Slika 157. Konstruktoru ne možemo pristupiti iz main metode

Testirajte kod. Ako ste sve ispravno uradili, rezultat će biti kao na slici:

Slika 158. Rezultat izvršavanja koda sa slike 156.

Sada ćemo napisati metodu koja će raditi nešto korisno. Dozvolit ćemo korisniku da unese dva slova
kojima se definiše kod za ispit. Zatim ćemo ta dva slova ispita prosljediti metodi koja će ih pretvoriti
u puno ime ispita. Naprimjer, ako korisnik ukuca "VB", metoda će vratiti string "Visual Basic .NET".
Puni naziv ispita će biti pohranjen u varijablu ime_ispita.
Dodajte sljedeći kod klasi Student, odmah ispod metode imeprezime():

109 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 159. Kod za metodu imeIspita

Metoda imeIspita prima jedan argument tipa String koji se zove ispitKod. Ovaj string će se sastojati
od samo dva slova. Iskazom IF...ELSE IF provjeravamo koja se dva slova nalaze u stringu. Ako
pronađemo odgovarajući, upisat ćemo puni naziv ispita u varijablu ime_ispita. Ako ne pronađemo
odgovor, u varijablu ćemo upisati "Ispit nije odabran".
Unutar klase DetaljiIspita dodat ćemo narednu liniju koda:
String ispit = student1.imeIspita("VB");
Ovom linijom koda samo pozivamo metodu. Predajemo joj kod za ispit "VB", a metoda kao povratnu
vrijednost daje "Visual Basic .NET" i pohranjuje je u varijablu naziva ispit. Dodat ćemo još jednu println
metodu, tako da će kod klase DetaljiIspita izgledati ovako:

Slika 160. Poziv metode imeIspita iz main metode

110 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Pokrenite kod i rezultat bi trebao biti :

Slika 161. Rezultat izvršavanja koda sa slike 160.

Do sada smo dodijelili ime studentu i ime ispitu. Ove dvije vrijednosti se nalaze unutar polja Student
klase. Sada ćemo napisati kod za broj bodova koje je student osvojio.
Dodajemo novu metodu klasi Student, odmah ispod metode imeIspita():

Slika 162. Kod za metodu brojBodova

Nova metoda se zove brojBodova, a kao argument prihvata cjelobrojnu vrijednost (int bodovi).
Povratna vrijednost je tipa String, jer se cjelobrojna vrijednost kombinuje sa tekstom "od mogućih
50". Ako je vrijednost varijable bodovi 30, tekst "30 od mogućih 50" će biti pohranjen u varijablu
broj_bodova.
U klasi DetaljiIspita dodajemo liniju koda:
String osvojeniBodovi = student1.brojBodova(30);
Dakle, pozivamo metodu brojBodova i prosljeđujemo joj integer 30. Nakon što metoda izvrši zadatak,
vrati nam vrijednost tipa String, koju pohranjujemo u varijablu osvojeniBodovi.
Dodajte još jednu println metodu kojom ćete ispisati osvojene bodove:

Slika 163. Poziv metode brojBodova iz main metode

111 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Rezultat će biti:

Slika 164. Rezultat izvršavanja koda sa slike 163.

Preostalo nam je samo da dodamo metodu za ispis ocjene.


Za ocjene ćemo koristiti slova A, B, C, D i E. Ako student bude imao 41 ili više bodova, ocjena će biti
A; ako je broj bodova između 31 i 40, ocjena će biti B; ako je između 21 i 30, ocjena će biti C; za broj
bodova od 11 do 20, dat ćemo ocjenu D; E je za broj bodova od 0 do 10.
Za računanje ocjena napisat ćemo sljedeći kod unutar Student klase:

Slika 165. Kod za metodu izračunajOcjenu

Uočite da smo ovu metodu učinili privatnom pišući riječ Private pri njenoj definiciji. Atributi koji su
privatni, mogu se vidjeti samo unutar klase u kojoj su definisani. Isto važi i za metode. Dakle, ovu
posljednu metodu koju smo napisali klasa DetaljiIspita ne vidi i ne može da joj pristupi.
Da bismo pristupili povratnoj vrijednosti metode izračunajOcjenu() iz klase DetaljiIspita, potrebno je
da definišemo još jednu metodu unutar klase Student, koja će biti veza za metodu izračunajOcjenu i
klasu DetaljiIspita. Ovu metodu ćemo napisati iznad metode izračunajOcjenu, mada smo je mogli
napisati i ispod, Javi to ne predstavlja nikakvu razliku.

112 | S t r a n a
Kulturni centar “Kralj Fahd” Java

String ocjena (int bodovi) {


broj_bodova = this. izračunajOcjenu (bodovi) ;
return broj_bodova;
}

Kako iz klase DetaljiIspita ne možemo pristupiti metodi izračunajOcjenu, metoda koju ćemo zvati iz
ove klase i metoda kojoj možemo pristupiti iz nje je String ocjena (int bodovi). Obratite pažnju na
sljedeću liniju koda:
broj_bodova = this. izračunajOcjenu (bodovi) ;
Unutar metode ocjena pozivamo metodu izračunajOcjenu i prosljeđujemo joj argument bodovi. Poziv
metode unutar tijela neke druge metode je standardna praksa, kojom pojednostavljujte kod.
Alternativa ovome su jako dugačke metode koje je teško čitati.
Riječ this koja se koristi, znači „ova klasa“, jer se može desiti da postoji još jedna klasa s istim imenom
metode, tako da se korištenjem riječi this izbjegava konfuzija. Nije obavezno da je navedete, poziv
metodi bi svejedno bio realizovan i bez nje.
broj_bodova = this. izračunajOcjenu (bodovi) ;
Povratnu vrijednost metode izračunajOcjenu pohranjujemo u varijablu broj_bodova, a to će
naprimjer biti string "Ocjena je: A" , u ovisnosti naravno koju ocjenu unesemo.
U klasi DetaljiIspita napišite sljedeće:
String ocjenaIspita = student1.ocjena(30);
Predajemo vrijednost 30 metodi ocjena(). Vrijednost koja se nakon svih računanja obavi bit će prvo
pohranjena u varijablu broj_bodova, a zatim nakon vraćanja vrijednosti, pohranjena u varijablu
ocjenaIspita.

113 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Dodajemo još jedan println za ispis varijable ocjenaIspita i kompletiran kod za ovu klasu će biti:

Slika 166. Poziv metode ocjena iz main metode

Rezultat je:

Slika 167. Rezultat izvršavanja koda sa slike 166.

Na sljedećoj stranici pogledajte kompletiran kod klase Student, u slučaju da neki dio niste dobro
napisali:

114 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 168. Kod za klasu Student

115 | S t r a n a
Kulturni centar “Kralj Fahd” Java

7.4 Nasljeđivanje
Bitan koncept objektno orjentisanog programiranja je nasljeđivanje. Pojednostavljeno rečeno,
nasljeđivanje je koncept u kojem je jedna klasa roditelj drugoj klasi. Klasu roditelj još zovemo i super
klasa, a klasu dijete podklasa. Kroz primjere će biti mnogo jasnije šta nasljeđivanje predstavlja, ali u
osnovi svrha je da se informacije unutar klasa drže razdvojenim. Dijete može nasljediti sve metode i
atribute od roditelj klase, ali u isto vrijeme može imati i svoje vlastite atribute i metode.
Kao primjer nasljeđivanja, kreirat ćemo podklasu koja će upravljati informacijama o certifikatima.
Nazvat ćemo je Certifikati, a roditelj će joj biti klasa Student. Ako student dobije ocjenu A, dodijelit
ćemo mu Certifikat Izvrsnosti, a ako dobije ocjenu B ili C, dodijelit ćemo mu Certifikat Postignuća. Za
preostale ocjene studenti neće dobiti certifikate. Svrha podklase Certifikati će biti da odvojimo
informacije o certificiranju od informacija o ispitima. Međutim, bit će nam potreban pristup nekim
informacijama iz roditelj klase, kao što je ime ispita.
Kreirat ćemo novu klasu iz File > New File Menija. Klasi ćemo dati ime Certifikati. Unutar klase ćemo
deklarisati privatni atribut naziva certifikat i izgled će biti kao na slici:

Slika 169. Kreiranje klase Certifikati

Za kreiranje podklase (djeteta) iz super klase (roditelja) koristi se ključna riječ extends. Nakon extends
se piše ime roditelj klase čije osobine želimo da podklasa nasljedi. Mi želimo kreirati podklasu
Certifikati, koja će nasljediti osobine klase Student, tj. kojoj će klasa Student biti roditelj.
Dovoljno je da poslije definicije klase public class Certifikati dodate extends Student, da biste pretvorili
klasu Certifikati u podklasu klase Student.

Slika 170. Kreiranje podklase Certifikati

Sada imamo podklasu koja nasljeđuje kod iz klase Student.


Kao što smo kreirali konstruktor za Student klasu, kreirat ćemo jedan i za Certifikati klasu. Kada
kreiramo objekat klase, Java prvo poziva njen konstruktor.

116 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Međutim, Java može pozvati samo jedan konstruktor. Ako pozovemo konstruktor klase Certifikati,sve
default vrijednosti koje smo podesili u prethodnoj lekciji za polja klase Student se neće dodijeliti. Da
bismo riješili ovaj problem, upotrijebit ćemo ključnu riječ super. Komandom super(); pozivamo
konstruktor klase roditelj. Kreirajmo konstruktor podklase:

Slika 171. Kreiranje konstruktora podklase

Ime konstruktora je isto kao i ime klase: Certifikati. Prvom linijom koda pozivamo super klasu. Nakon
što se ova linija koda izvrši bit će dodijeljene default vrijednosti atributima klase Student.
Drugom linijom koda dodjeljujemo default vrijednost varijabli tipa String koja se zove certifikat.
Da bismo testirali novu podklasu, otvorit ćemo klasu DetaljiIspita u kojoj se nalazi main metoda.
Zakomentarisat ćemo cijeli kod koji smo do sada napisali. Prvo odaberemo kod, a zatim kliknemo na
ikonicu Comment iz alatne trake:

Slika 172. Ikone za komentarisanje koda

Da biste vratili izvorni kod bez komentara, opet sve odaberite i kliknite ikonicu Uncomment.
Sada ćemo kreirati novi objekat klase Certifikati u main metodi:
Certifikati c1 = new Certifikati();

117 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 173. Komentarisanje koda

Ime objekta je c1. Tip objekta je Certifikat objekat.


Da bismo se uvjerili da zaista imamo pristup metodama super klase Student, dodat ćemo sljedeću
liniju koda ispod:
String ispit = c1.imeIspita("VB");
Ova linija koda je slična onoj koju smo prije koristili:
String ispit = student1.imeIspita("VB");
Međutim, sada koristimo objekat Certifikati umjesto objekta Student, tj. koristimo c1, umjesto
student1.
Nakon dodavanja println kod će izgledati ovako:

118 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 174. Poziv metode imeIspita iz main metode

Nakon pokretanja programa dobit ćemo rezultat kao na slici:

Slika 175. Rezultat izvršavanje koda sa slike 174.

Uspješno smo pozvali metodu super klase. U nastavku ćemo kreirati metodu za podklasu, odmah
ispod konstruktor metode:

119 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 176. Kod za metodu dodijeljeniCertifikat

Metodu smo nazvali dodijeljeniCertifikat i vrijednost koju će vratiti nakon što se izvrši će biti tipa
String. Kao argument joj prosljeđujemo broj bodova koje je student osvojio na ispitu.
Prva linija koda je:
String ocjenaIspita = ocjena(bodovi)
Metoda ocjena pripada super klasi Student. Prisjetimo se da je ona bila podešena tako da vraća ocjenu
uz neki dodatni tekst: "Ocjena je: A", "Ocjena je: B" itd. U ovom primjeru metodu smo pozvali iz
podklase. If iskazom provjeravamo šta se nalazi unutar varijable ocjenaIspita. U ovisnosti o sadržaju
varijable ocjenaIspita, vraćamo novi string, koji će sadržavati informacije o certificiranju: "Certifikat
Izvrsnosti", "Certifikat Postignuća" ili "Certifikat nije dodijeljen".
Vratimo se u klasu DetaljiIspita i dodajmo sljedeće:
String nagrada = c1. dodijeljeniCertifikat(50);
Pozivamo metodu podklase Certifikati koja se zove dodijeljeniCertifikat. Metodi prosljeđujemo
vrijednost 50. Povratna vrijednost metode dodijeljeniCertifikat će se pohraniti u varijablu naziva
nagrada.
Izmijenit ćemo println metodu tako da ispisuje:
System.out.println(ispit + " " +nagrada);

120 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Nakon izbrisanih komentara, klasa DetaljiIspita će izgledati ovako:

Slika 177. Kod za klasu DetaljiIspita

Nakon što pokrenemo program, rezultat će biti:

Slika 178. Rezultat izvršavanja koda sa slike 177.

Sumarno: Koristili smo nasljeđivanje da držimo podatke o ispitu odvojenim od podataka o


certificiranju. Podaci se mogu izdvojiti korištenjem podklase. Podklasa nije zasebna klasa i u vezi je sa
svojom roditelj klasom. Može koristiti cijeli kod koji se nalazi u roditelj klasi, a pri tome imati i svoj
vlastiti.

8. Upravljanje greškama
Generalno, sve vrste grešaka koje se pojave u kodu mogu se podijeliti u dva tipa: greške kodiranja i
greške logike. Greške kodiranja su lako uočljive jer ih NetBeans obilježi (podcrta). Ako je greška takva
da se program neće moći pokrenuti, NetBeans će grešku podcrtati crvenom bojom. Greške logike su
one koje napravite kao neiskusan programer. Program će se pokrenuti, ali kako ste nešto pogrešno
kodirali, velike su šanse da će se „srušiti“. U ovoj lekciji ćemo naučiti kako upravljati greškama u Javi.

121 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Exception objekat
U Javi se greškama upravlja korištenjem Exception objekta. Riječ exception znači izuzetak. Kaže se da
kada se desi izuzetak, potrebno je da ga „uhvatimo“. To radimo pomoću bloka koji se zove try...catch
block. Struktura try...catch bloka je ovakva:
try {
}
catch ( Tip varijabla_greške ) {
}

Dio try, try...catch bloka znači „isprobaj ovaj kod“. Ako nešto krene pogrešno, Java će izvršiti catch
dio. Dakle, u slučaju da je moguće izvršiti kod pod try, on će se i izvršiti, u slučaju da nije, Java prelazi
na catch dio. Prvo se provjerava sadržaj zagrada catch dijela. Ako ste napisali ispravan Tip greške, Java
će izvršiti catch dio, a ako niste, onda će Java, koristeći svoj default upravljač greškama, prikazati
poruku greške.
Kreirat ćemo novu konzolnu aplikaciju. Nazovite je UpravljanjeGreškama. U kodu main metode
ukucajte sljedeće:

Slika 179. Primjer korištenja try...catch bloka

U dijelu try, smo deklarisali tri integer varijable: x, y i z. Probat ćemo podijeliti x sa y, a zatim ispisati
rezultat. Ako se unutar koda pojavi neka greška, regulisat ćemo je u catch dijelu. Unutar zagrada catch
dijela imamo:
Exception err
U zagradama catch dijela prvo se navodi tip greške (izuzetka). U ovom primjeru koristimo objekat za
izuzetke koji se zove Exception. Ovaj objekat se generalno koristi za sve vrste izuzetaka i njegovo
korištenje nije dobra programerska praksa. Nešto kasnije ćemo ga promijeniti.

122 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Poslije tipa izuzetka pišete razmak, a zatim ime varijable. Našu varijablu smo nazvali err, a vi joj
možete dodijeliti i neko drugo ime po svom izboru.
Unutar vitičastih zagrada koristimo već do sada viđeni println. Ono što je novo je argument koji
koristimo za println metodu, a koji izgleda ovako:
err.getMessage( )
Metoda getMessage() je dostupna svim objektima izuzetaka - Exception. Ona dobavlja poruku o
greški koja je u vezi sa specifičnim izuzetkom.
Pokrenite program Upravljanjegreškama.java. Rezultat će biti:

Slika 180. Rezultat izvršavanja koda sa slike 179.

Greška koju je generisala metoda getMessage se nalazi na drugoj liniji:


/ by zero
Ova greška predstavlja grešku „dijeljenje nulom“. Java ne dopušta dijeljenje nulom, te smo zbog toga
dobili prikaz greške.
Sada ćemo izmijeniti kod da izgleda ovako:

Slika 181. Izmjena koda – korištenje double vrijednosti

123 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Nakon pokretanja programa, rezultat će biti:

Slika 182. Rezultat izvršenja koda sa slike 181.

Poruka greške Infinity znači beskonačnost. Java neće prikazati rezultat, jer je rezultat beskonačno
veliki broj.
Greške koje se tiču rada s brojevima ne bi trebale biti upravljanje tipom Exception, koji je previše
generalan tip. Postoji tip naziva ArithmeticException, koji je specijalno namijenjen upravljanju
izuzecima aritmetičkog tipa. Možete ga testirati. Izbrišite riječ Exception iz zagrada catch dijela i
zamijenite ga sa ArithmeticException. Pokrenite program ponovo.
Uočit ćete da u prikazu Output prozora i nema neke razlike. Ali, korištenje ArithmeticException
objekta je dobra praksa, jer sužavate tip grešaka koje očekujete, koristeći ovaj tip.

8.1 Praćenje stack-a


U normalnom toku programa, kada Java virtualna mašina izvršava vaš kod, jedna metoda poslije
druge će se redom izvršavati, počinjući od main metode. Kada na neku metodu dođe red da se
izvršava kažemo da je ona na vrhu stacka. Nakon što se metoda u cjelosti završi, skida se sa stacka i
na njeno mjesto dolazi druga metoda. Da bismo ilustrovali sve rečeno napišimo kod:

Slika 183. Kod za klasu UpravljanjeGreškama

124 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Pored main metode imamo i dvije nove metode, naziva m1 i m2. Kada program započne sa
izvršavanjem, metoda main će se nalaziti na vrhu stacka. Prije nego se main završi, pozivamo drugu
metodu – m1. Čim pozovemo metodu m1, ona zauzima prvo mjestu na stacku. Isto tako, kada se
pozove metoda m2, ona zauzima prvo mjesto. Nakon što metoda m2 završi sa radom, kontrola se
vraća metodi m1. Nakon što m1 završi sa radom, metoda main ponovo dolazi na vrh stacka.
Pokrenite program. Rezultat će biti ovakav:

Slika 184. Rezultat izvršenja koda sa slike 183.

U slučaju da se unutar metode m2 pojavi greška, JVM će potražiti kod za upravljanje grešakama kao
što je try...catch blok. Ako ova metoda nema kod za upravljanje greškama, izuzetak će se prosljediti
metodi m1, da ga ona pokuša riješiti. Ako ni tu nema rješenja, izuzetak se prosljeđuje ponovo ka vrhu
stacka,tj. ka main metodi. Ako ni tu nismo napisali try...catch blok, u Output prozoru će se prikazati
pomalo čudna poruka o greški. Izmijenimo metodu m2, ovako:

Slika 185. Kod sa izmijenjenom metodom m2

125 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Metoda m2 sadržu grešku dijeljenja sa nulom, ali ovaj put nemamo try...catch blok. Pokrenite
program i dobit ćete sljedeći prikaz u Output prozoru:

Slika 186. Rezultat izvršavanja koda sa slike 185.

Prikaz koji vidite u Output prozoru zove se praćenje stack-a (eng. stack trace). Tri linije podcrtane
plavom bojom ukazuju na vaše metode i njihovu lokaciju:
ime_paketa.ime_klase.ime_metode
Prva linija je metoda gdje se greška prvi put dogodila, a to je metoda m2. Java je očekivala da će se
unutar metode nalaziti try...catch blok sa tipom ArithmeticException, koji upravlja artimetičkim
greškama. Ovaj blok nije našla u m2, niti u m1 i main, tako da je program ispisao poruku default
upravljača greškama.
Izmijenite kod m1 metode:

Slika 187. Izmjena koda m1 metode

Sada smo poziv metode m2 napisali unutar try bloka. U dijelu catch za tip izuzetka smo napisali
ArithmeticException, kako nam je bilo prijavljeno u prikazu praćenja stack-a.
Ponovo pokrenite kod i rezultat će biti kao na slici:

Slika 188. Rezultat izvršavanja koda nakon izmjene metode m1

126 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Poruka greške koja se ispisala je poruka o dijeljenju nulom: "/ by zero". Metoda m2 se nije u cjelosti
izvršila, nego se zaustavila na mjestu na kojem se dogodila greška. Nakon toga, kontrola je vraćena
metodi m1. Kako ovaj put imamo try...catch blok za upravljanje greškama, JVM nije ispisala poruku
default upravljača greškama, nego poruku koja se nalazi u vitičastim zagradama catch dijela.
Program u cjelini se nije zaustavio. Kontrola je prebačena main metodi, odakle se poziva m1.
Posljednja linija koda main metode, kojom se ispisuje "Kraj main metode" se zapravo izvršila. Ovo ima
važne implikacije. Pretpostavimo da vam je trebala neka vrijednost iz m1 s kojom ste željeli nešto
raditi u main metodu. Vrijednost se ne bi mogla pronaći u m1 metodi i program se ne bi ponašao kako
ste očekivali.
Ali ako ne iskoristite try...catch blok i dobijete prikaz praćenja stack-a u Output prozoru, zapamtite da
je prva linija lokacija na kojoj se dogodila greška. Ostale linije predstavljaju lančanu predaju izuzetka
kroz metode, što obično završava main metodom.

127 | S t r a n a
Kulturni centar “Kralj Fahd” Java

8.2 Upravljanje logičkim greškama


Logičke greške su greške koje napravite kao programer i identifikujete ih tako što uočite da se
program ne ponaša onako kako ste željeli. Njih je ponekada teško identificirati. NetBeans ima
ugrađene alate koji vam mogu pomoći pri pronalaženju ovih greški.
Otkucajte sljedeći kod:

Slika 189. Kod za klasu UpravljanjeGreškama2

Ovim kodom pokušavamo saznati koliko se puta slovo "g" pojavljuje unutar riječi "Debugging". Očito
je da je rješenje 3 puta. Ali, kada pokrenemo program rezultat će biti:

Slika 190. Rezultat izvršavanja koda sa slike 189.

Negdje smo, dakle, napravili grešku prilikom pisanja koda. Program se izvršava dobro i ne prijavljuje
nikakve greške u Output prozoru, koje bismo mogli analizirati. Šta u ovakvim slučajevima možemo
učiniti?
Da biste detaljno mogli istražiti probleme unutar vašeg koda, NetBeans vam omogućava korištenje
nečega što se zove Breakpoint.
Kliknite na područje označeno na slici i trebao bi se pojaviti crveni kvadratić koji je oznaka za
Breakpoint:

128 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 191. Postavljanje tačke prekida koda - Breakpoint

Iz Menija kliknite na Debug > Debug Project. NetBeans će započeti debagiranje od mjesta na kojem
ste postavili Breakpoint. U ovom momentu prestaje izvršavanje koda.

Slika 192. Debagiranje koda

Na vrhu biste trebali vidjeti novu alatnu traku:

Slika 193. Nova alatna traka pri debagiranju

Prva tri dugmeta vam služe za zaustavljanje debagiranja, pauziranje i nastavak. Sljedećih pet dugmadi
koristite za prelazak s jedne linije koda na neku drugu. Možete ih redom klikati da vidite po čemu se
razlikuju.
Da biste izašli iz sesije debagiranja, pritisnite Stop, a zatim ponovo kliknite na Breakpoint da je
sklonite.
Sada ćemo dodati Breakpoint za petlju:

Slika 194. Dodavanje Breakpoint-a za petlju

Sad kliknite na Debug > New Watch. Ova komanda vam omogućava da pratite koja se vrijednost
nalazi u nekoj varijabli. Otvorit će se prozor u koji ćete ukucati slovo i kliknuti OK:

129 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 195. Dodavanje – New Watch za posmatranje varijabli

Postupak ponovite još dva puta, za varijable: slovo i brojSlova. Ove tri varijable bi se trebale prikazati
na dnu ekrana:

Slika 196. Postavljanje tri New watch opcije

Zatim pritisnite ikonu iz nove alatne trake:

Slika 197. Ikona za prolaženje kroz linije koda

Postoji i kratica za ovu komandu, a to je F7 na tastaturi. Možete kontinuirano pritiskati F7 i u isto


vrijeme pratiti ishod u Watch prozoru. Vijdet ćete kako se varijabla i svaki put poveća za 1. Ali, druge
dvije varijable ne mijenjaju vrijednost:

Slika 198. Uočavanje greške pri izvršavanju koda

Kako se u varijabli slovo ne nalazi ništa, varijabla brojSlova će stalno imati vrijednost 0. Pronašli smo
problem. Greška je u substring metodi, jer ona ne dobavlja nikakve karaktere, a trebala bi.
Zaustavite sesiju debagiranja i izmijenite kod substring metode ovako:
slovo = riječ.substring(i, i+1);
Ponovo započnite debagiranje. Ovoga puta pri pritiskanju F7 trebali biste vidjeti kako se sve tri
varijable mijenjanju. Kada se izvršavanje koda završi rezultat u Output prozoru će biti:
" Pronađeno je slovo g 3 puta"

130 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Ako se vaš kod ne izvršava kako treba, postavite Breakpoint i dodajte Watch za vaše varijable. Nakon
toga započnite debagiranje. Možda će u početku biti teško da identificirate greške, ali uz malo prakse
postajat će sve lakše.

131 | S t r a n a
Kulturni centar “Kralj Fahd” Java

9. ZAKLJUČAK
Cilj ove skripte je bilo vaše upoznavanje sa programskim jezikom Java i nadamo se da ćete u svom
daljem školovanju i radu primijeniti stečena znanja. Preostaje nam da u ovom završnom dijelu
navedemo par prednosti i razloga zbog čega biste se u daljem profesionalnom radu trebali opredijeliti
za ovaj programski jezik. Prvi razlog je popularnost Jave, budući da je njena cijena potpuno besplatna.
Drugi razlog je to što se Java programi mogu izvršavati neovisno o tipu računara, tj. neovisno o tipu
platforme na kojoj se izvršavaju. Java može da se koristi za razvoj raznovrsnih aplikacija.
Postoje jednostavni tekstualno-zasnovani programi koji se nazivaju konzolnim aplikacijama. Takvi
programi podržavaju samo tekstualni unos i ispis na monitoru vašeg račuanara. U ovoj skripti smo se
bazirali na takve primjere, budući da su najjednostavniji, ali ima i mnogo drugih kompleksnijih
primjera upotrebe Jave.
Takođe, možete da pravite aplikacije sa grafičkim korisničkim interfejsom (engl. Graphical User
Interface–GUI). Ove aplikacije raspolažu sa menijima, paletama alatki, dugmadima, trakama za
pomjeranje sadržaja, itd. Takođe, možete praviti i aplikacije koje se nazivaju apleti (engl. Applets). To
su male GUI aplikacije koje mogu da se izvršavaju unutar web-stranice. Apleti daju dinamičnost web-
stranicama. Dakle, na vama je da nastavite sa nadogradnjom i učenjem ovog programskog jezika, a
nadamo se da je skripta poslužila kao dobra podloga za to.

132 | S t r a n a
Kulturni centar “Kralj Fahd” Java

10. LITERATURA
▪ Learning Java, 4th Edition, by Patrick Niemeyer and Daniel Leuck, O'Reilly Media; 4 edition
(July 2, 2013)
▪ Introduction to Programming in Java: An Interdisciplinary Approach, by Robert Sedgewick and
Kevin Wayne, Addison Wesley, 1 edition (July 27, 2007); eBook (Updated Continuously)
▪ Object Oriented Programming in Java, by Rick Halterman, Southern Adventist University
(2008)
▪ The Java Tutorials, by Sharon Zakhour and Raymond Gallardo, Addison-Wesley Professional;
5 edition (March 11, 2013)
▪ Introduction to Programming Using JAVA, by David J. Eck, CreateSpace (March 25, 2009),
eBook (Version 6.0, June 2011)

133 | S t r a n a
Kulturni centar “Kralj Fahd” Java

11. SADRŽAJ SLIKA


Slika 1. Opcije preuzimanja Java Software Development alata .............................................................................. 3
Slika 2. Izgled ekrana prilikom prvog pokretanja NetBeansa.................................................................................. 4
Slika 3. Prozor za kreiranje novog projekta ............................................................................................................ 5
Slika 4. Izgled prozora Projects, gdje se nalaze projekti koje kreirate ..................................................................... 6
Slika 5. Sadržaj projekta naziva PrviProjekat .......................................................................................................... 6
Slika 6. Prikaz fajla sa izvornim kodom naziva PrviProjekat.java ............................................................................ 6
Slika 7. Izgled prozora za pisanje koda ................................................................................................................... 7
Slika 8. Komentari u kodu su prikazani sivom bojom ............................................................................................. 8
Slika 9. Izgled koda poslije brisanja komentara ...................................................................................................... 9
Slika 10. Pokretanje programa iz Run Menija ....................................................................................................... 10
Slika 11. Pokretanje programa pomoću ikone ...................................................................................................... 11
Slika 12. Pokretanje programa iz Projects prozora ............................................................................................... 11
Slika 13. Rezultat izvršavanja programa se prikazuje u prozoru Output ............................................................... 11
Slika 14. Pomoćna lista opcija koje možete koristiti uz System ............................................................................ 12
Slika 15. Pomoćna lista opcija koju možete koristiti uz out .................................................................................. 13
Slika 16. Unutar zagrada println metode pod navodnicima pišemo tekst za ispis ................................................. 13
Slika 17. Kucanje teksta za ispis ........................................................................................................................... 13
Slika 18. Prikaz sadržaja foldera naziva PrviProjekat ............................................................................................ 14
Slika 19. Prikaz sadržaja dist foldera .................................................................................................................... 14
Slika 20. Kod za ispis integer varijable.................................................................................................................. 16
Slika 21. Rezultat izvršavanja koda sa slike 20...................................................................................................... 17
Slika 22. Redoslijed izvršavanja radnji pri sabiranju ............................................................................................. 17
Slika 23. Kod za ispis rezultata sabiranja dva integer broja .................................................................................. 18
Slika 24. Rezultat izvršavanja koda sa slike 23...................................................................................................... 18
Slika 25. Kod za ispis rezultata sabiranja dva double broja ................................................................................... 19
Slika 26. Rezultat izvršavanja koda sa slike 25...................................................................................................... 19
Slika 27. Kod za ispis rezultata dijeljenja dva float broja ...................................................................................... 20
Slika 28. Primjer redoslijeda matematičkih operacija .......................................................................................... 21
Slika 29. Kreiranje novog projekta za rad sa stringovima ..................................................................................... 22
Slika 30. Kod za ispis imena i prezimena .............................................................................................................. 23
Slika 31. Rezultat izvršavanja koda sa slike 30...................................................................................................... 23
Slika 32. Kod za ispis inicijala korištenjem char varijable ..................................................................................... 23
Slika 33. Primjer korištenja Scanner klase za preuzimanje unosa korisnika .......................................................... 26
Slika 34. Rezultat izvršavanja koda sa slike 33. – prvi dio ..................................................................................... 26
Slika 35. Rezultat izvršavanja koda sa slike 33. – drugi dio ................................................................................... 27
Slika 36. Rezultat izvršavanja koda sa slike 33. – treći dio .................................................................................... 27
Slika 37. Rezultat izvršavanja koda sa slike 33. u cjelini ....................................................................................... 27
Slika 38. Prozor za unos podataka ........................................................................................................................ 27
Slika 39. Prozor za ispis poruke korisniku ............................................................................................................. 28
Slika 40. Dodavanje import linije koda novom projektu....................................................................................... 28
Slika 41. Lista opcija za korištenje uz JOptionPane klasu ...................................................................................... 29
Slika 42. Primjer korištenja JOptionPane klase..................................................................................................... 30
Slika 43. Rezultat izvršavanja koda sa slike 42. – prvi dio ..................................................................................... 30
Slika 44. Rezultat izvršavanja koda sa slike 42. – drugi dio ................................................................................... 31
Slika 45. Rezultat izvršavanja koda sa slike 42. – treći dio .................................................................................... 31
Slika 46. Preimenovanje paketa ........................................................................................................................... 34
Slika 47. Primjer korištenja IF iskaza .................................................................................................................... 35
Slika 48. Rezultat izvršavanja koda sa slike 47...................................................................................................... 35
Slika 49. Rezultat izvršavanja koda sa slike 47. (godine=18) ................................................................................. 35
Slika 50. Primjer upotrebe više IF iskaza .............................................................................................................. 36

134 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 51. Rezultat izvršavanja koda sa slike 50. ( godine <= 18) ............................................................................ 36
Slika 52. Rezultat izvršavanja koda sa slike 50. (godine = 20) ............................................................................... 36
Slika 53. Primjer korištenja if...else iskaza............................................................................................................ 37
Slika 54. Primjer korištenja if...else if iskaza uz operatora poređenja (&&) .......................................................... 39
Slika 55. Primjer korištenja if...else if iskaza uz operator poređenja (||) ............................................................. 40
Slika 56. Comment ikona ..................................................................................................................................... 43
Slika 57. Primjer korištenja switch iskaza ............................................................................................................. 43
Slika 58. Primjer korištenja For petlje .................................................................................................................. 46
Slika 59. Rezultat izvršavanja koda sa slike 58...................................................................................................... 48
Slika 60. Primjer sabiranja brojeva korištenjem For petlje ................................................................................... 48
Slika 61. Rezultat izvršavanja koda sa slike 60...................................................................................................... 49
Slika 62. Kod za izmjenu For petlje sa slike 60. ..................................................................................................... 49
Slika 63. Rezultat izvršavanja koda nakon izmjene sa slike 62. ............................................................................. 50
Slika 64. Grafički prikaz jednodimenzionalnog niza .............................................................................................. 53
Slika 65. Primjer korištenja nizova ....................................................................................................................... 55
Slika 66. Rezultat izvršavanja programa sa slike 65. ............................................................................................. 55
Slika 67. Primjer korištenja For petlje za dodjelu vrijednosti nizu ........................................................................ 56
Slika 68. Korištenje biblioteke Arrays u kodu ....................................................................................................... 57
Slika 69. Primjer za korištenje sort metode .......................................................................................................... 58
Slika 70. Rezultat izvršavanja koda sa slike 69...................................................................................................... 58
Slika 71. Kod za sortiranje niza u opadajućem redoslijedu ................................................................................... 59
Slika 72. Primjer korištenja stringova unutar niza ................................................................................................ 60
Slika 73. Rezultat izvršavanja koda sa slike 72...................................................................................................... 60
Slika 74. Primjer korištenja stringova unutar niza uz sort metodu ....................................................................... 61
Slika 75. Rezultat izvršavanja koda sa slike 74...................................................................................................... 61
Slika 76. Rezultat izvršavanja koda sa slike 74. nakon izmjene ............................................................................. 61
Slika 77. Grafički prikaz višedimenzionalnog niza................................................................................................. 62
Slika 78. Dio koda za ispis brojeva sa slike 77. ...................................................................................................... 63
Slika 79. Kod za ispis prva dva reda brojeva sa slike 77. ....................................................................................... 64
Slika 80. Rezultat izvršavanja koda sa slike 79...................................................................................................... 64
Slika 81. Rezultat rješenja Vježbe 1 ...................................................................................................................... 64
Slika 82. Primjer korištenja Iterator objekta ........................................................................................................ 66
Slika 83. Rezultat izvršavanja koda sa slike 82...................................................................................................... 67
Slika 84. Primjer korištenja metode toUpperCase() ............................................................................................. 68
Slika 85. Rezultat izvršavanja koda sa slike 84...................................................................................................... 69
Slika 86. Primjer korištenja metode compareTo .................................................................................................. 69
Slika 87. Primjer korištenja metode indexOf ........................................................................................................ 70
Slika 88. Primjer korištenja indexOf metode uz testiranje rezultata ..................................................................... 71
Slika 89. Korištenje metode indexOf za testiranje stringa na više karaktera ........................................................ 72
Slika 90. Korištenje metode indexOf uz određenu startnu poziciju pretrage ........................................................ 72
Slika 91. Primjer korištenja metode substring...................................................................................................... 74
Slika 92. Rezultat izvršavanja koda sa slike 91...................................................................................................... 74
Slika 93. Primjer lociranja razmaka korištenjem indexOf metode ........................................................................ 76
Slika 94. Rezultat izvršavanja koda sa slike 93...................................................................................................... 76
Slika 95. Primjer izdvajanja dva slova prezimena korištenjem metode substring ................................................. 77
Slika 96. Rezultat izvršavanja koda sa slike 95...................................................................................................... 77
Slika 97. Kod za zamjenu slova imena i prezimena ............................................................................................... 78
Slika 98. Rezultat izvršavanja koda sa slike 97...................................................................................................... 78
Slika 99. Kod za lančano uvezivanje imena i prezimena ....................................................................................... 78
Slika 100. Rezultat izvršavanja koda sa slike 97. uz dopunu koda ........................................................................ 79
Slika 101. Dopuna koda sa slike 97. (dodatak koda za unos sa tastature) ............................................................ 79
Slika 102. Rezultat izvršavanja koda sa slike 101. ................................................................................................. 80

135 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 103. Primjer upotrebe equals metode ......................................................................................................... 80


Slika 104. Primjer upotrebe charAt metode ......................................................................................................... 82
Slika 105. Rezultat izvršavanja koda sa slike 105. ................................................................................................. 82
Slika 106. Primjer upotrebe metode replace ........................................................................................................ 83
Slika 107. Rezultat izvršavanja koda sa slike 106. ................................................................................................. 83
Slika 108. Rezultat izvršavanja koda koji koristi formatiranje stringova ............................................................... 84
Slika 109. Rezultat izvršavanja koda - Kod1.......................................................................................................... 86
Slika 110. Rezultat izvršavanja koda – Kod2 ......................................................................................................... 86
Slika 111. Rezultat izvršavanja koda – Kod3 ......................................................................................................... 87
Slika 112. Rezultat izvršavanja koda – Kod4 ......................................................................................................... 87
Slika 113. Rezultat izvršavanja koda – Kod5 ......................................................................................................... 87
Slika 114. Rezultat izvršavanja koda – Kod6 ......................................................................................................... 88
Slika 115. Rezultat izvršavanja koda sa slike 116. ................................................................................................. 88
Slika 116. Ispis formatiranog teksta ..................................................................................................................... 89
Slika 117. Struktura metode ................................................................................................................................ 90
Slika 118. Primjer metode koja ne vraća vrijednost ............................................................................................. 90
Slika 119. Primjer metode koja ne vraća vrijednost i ne prima argumente .......................................................... 91
Slika 120. Primjer metode koja vraća vrijednost tipa int i nema argumente ........................................................ 91
Slika 121. Kreiranje novog projekta naziva Metode ............................................................................................. 91
Slika 122. Kreiranje nove klase naziva MojeMetode ............................................................................................ 92
Slika 123. Dodavanje koda klasi MojeMetode ..................................................................................................... 92
Slika 124. Kreiranje objekta klase MojeMetode ................................................................................................... 93
Slika 125. Kod za pozivanje metode total() .......................................................................................................... 93
Slika 126. Vidljivost metode total() ...................................................................................................................... 94
Slika 127. Kod za ispis rezultata metode total().................................................................................................... 94
Slika 128. Rezultat izvršavanja koda sa slike 127. ................................................................................................. 94
Slika 129. Dodavanje metode ispisTekst() klasi MojeMetode .............................................................................. 95
Slika 130. Vidljivost metode ispisTekst() .............................................................................................................. 95
Slika 131. Rezultat izvršavanja koda sa slike 129. ................................................................................................. 96
Slika 132. Dodavanje još jedne metode total klasi MojeMetode ......................................................................... 96
Slika 133. Dodavanje komentara iznad metode total........................................................................................... 97
Slika 134. Prikaz komentara metode total ........................................................................................................... 98
Slika 135. Izgled main metode sa svim izmjenama ............................................................................................... 98
Slika 136. Prosljeđivanje vrijednosti metodi ........................................................................................................ 99
Slika 137. Rezultat izvršavanja koda sa slike 135. ................................................................................................. 99
Slika 138. Metoda ispisTekst koja prima dva argumenta ..................................................................................... 99
Slika 139. Vidljivost metode ispisTekst .............................................................................................................. 100
Slika 140. Metoda main sa dvije metode naziva ispisTekst ................................................................................ 100
Slika 141. Rezultat izvršavanja koda sa slike 140. ............................................................................................... 101
Slika 142. Kreiranje novog projekta DetaljiIspita................................................................................................ 101
Slika 143. Kreiranje nove klase........................................................................................................................... 102
Slika 144. Kreiranje nove klase naziva Student .................................................................................................. 102
Slika 145. Deklaracija varijabli instance ............................................................................................................. 103
Slika 146. Kreiranje objekta klase Student ......................................................................................................... 103
Slika 147. Vidljivost varijabli instance ................................................................................................................ 104
Slika 148. Korištenje varijabli instance unutar main metode ............................................................................. 104
Slika 149. Korištenje modifikatora private ......................................................................................................... 105
Slika 150. Nakon upotrebe modifikatora private ne možemo pristupiti varijablama instance ........................... 105
Slika 151. Nakon upotrebe modifikatora private ne možemo pristupiti varijablama instance ........................... 105
Slika 152. Konstruktor klase Student ................................................................................................................. 106
Slika 153. Pohranjivanje vrijednosti u varijable instance korištenjem konstruktora........................................... 106
Slika 154. Dodjela fiksnih vrijednosti atributima klase ....................................................................................... 107

136 | S t r a n a
Kulturni centar “Kralj Fahd” Java

Slika 155. Definisanje imprezime metode kojom mijenjamo vrijednost varijable .............................................. 108
Slika 156. Poziv metode imeprezime() iz klase Student ...................................................................................... 109
Slika 157. Konstruktoru ne možemo pristupiti iz main metode .......................................................................... 109
Slika 158. Rezultat izvršavanja koda sa slike 156. ............................................................................................... 109
Slika 159. Kod za metodu imeIspita ................................................................................................................... 110
Slika 160. Poziv metode imeIspita iz main metode ............................................................................................ 110
Slika 161. Rezultat izvršavanja koda sa slike 160. ............................................................................................... 111
Slika 162. Kod za metodu brojBodova ................................................................................................................ 111
Slika 163. Poziv metode brojBodova iz main metode ......................................................................................... 111
Slika 164. Rezultat izvršavanja koda sa slike 163. ............................................................................................... 112
Slika 165. Kod za metodu izračunajOcjenu ......................................................................................................... 112
Slika 166. Poziv metode ocjena iz main metode................................................................................................. 114
Slika 167. Rezultat izvršavanja koda sa slike 166. ............................................................................................... 114
Slika 168. Kod za klasu Student .......................................................................................................................... 115
Slika 169. Kreiranje klase Certifikati ................................................................................................................... 116
Slika 170. Kreiranje podklase Certifikati ............................................................................................................. 116
Slika 171. Kreiranje konstruktora podklase ........................................................................................................ 117
Slika 172. Ikone za komentarisanje koda ........................................................................................................... 117
Slika 173. Komentarisanje koda ......................................................................................................................... 118
Slika 174. Poziv metode imeIspita iz main metode ............................................................................................ 119
Slika 175. Rezultat izvršavanje koda sa slike 174. ............................................................................................... 119
Slika 176. Kod za metodu dodijeljeniCertifikat ................................................................................................... 120
Slika 177. Kod za klasu DetaljiIspita ................................................................................................................... 121
Slika 178. Rezultat izvršavanja koda sa slike 177. ............................................................................................... 121
Slika 179. Primjer korištenja try...catch bloka .................................................................................................... 122
Slika 180. Rezultat izvršavanja koda sa slike 179. ............................................................................................... 123
Slika 181. Izmjena koda – korištenje double vrijednosti ..................................................................................... 123
Slika 182. Rezultat izvršenja koda sa slike 181. .................................................................................................. 124
Slika 183. Kod za klasu UpravljanjeGreškama .................................................................................................... 124
Slika 184. Rezultat izvršenja koda sa slike 183. .................................................................................................. 125
Slika 185. Kod sa izmijenjenom metodom m2 .................................................................................................... 125
Slika 186. Rezultat izvršavanja koda sa slike 185. ............................................................................................... 126
Slika 187. Izmjena koda m1 metode .................................................................................................................. 126
Slika 188. Rezultat izvršavanja koda nakon izmjene metode m1 ........................................................................ 126
Slika 189. Kod za klasu UpravljanjeGreškama2 .................................................................................................. 128
Slika 190. Rezultat izvršavanja koda sa slike 189. ............................................................................................... 128
Slika 191. Postavljanje tačke prekida koda - Breakpoint .................................................................................... 129
Slika 192. Debagiranje koda ............................................................................................................................... 129
Slika 193. Nova alatna traka pri debagiranju ...................................................................................................... 129
Slika 194. Dodavanje Breakpoint-a za petlju ...................................................................................................... 129
Slika 195. Dodavanje – New Watch za posmatranje varijabli ............................................................................. 130
Slika 196. Postavljanje tri New watch opcije ...................................................................................................... 130
Slika 197. Ikona za prolaženje kroz linije koda ................................................................................................... 130
Slika 198. Uočavanje greške pri izvršavanju koda .............................................................................................. 130

12. SADRŽAJ TABELA


Tabela 1. Formatiranje stringova ......................................................................................................................... 85
Tabela 2. Formatiranje cijelih brojeva .................................................................................................................. 85
Tabela 3. Formatiranje realnih brojeva ................................................................................................................ 85

137 | S t r a n a
Kulturni centar “Kralj Fahd” Java

SADRŽAJ
1. Uvod u Javu ................................................................................................................................................... 2
1.1 Instalacija .....................................................................................................................................................2
1.2 NetBeans Software .......................................................................................................................................4
1.3 Java komentari .............................................................................................................................................7
1.4 Struktura Java koda......................................................................................................................................9
1.5 Pokretanje Java programa .........................................................................................................................10
1.6 Ispis teksta u prozoru Output .....................................................................................................................12
1.7 Dijeljenje programa s drugima ...................................................................................................................14

2. Varijable ...................................................................................................................................................... 15
2.1 Integer varijable .........................................................................................................................................15
2.2 Double varijable .........................................................................................................................................19
2.3 Short i Float varijable .................................................................................................................................20
2.4 Jednostavne aritmetičke operacije .............................................................................................................20
2.5 Redoslijed operacija ...................................................................................................................................21
2.6 String varijable ...........................................................................................................................................22
2.7 Input korisnika ............................................................................................................................................24
2.8 Input prozori ...............................................................................................................................................27

3. Kontrola toka programa .............................................................................................................................. 33


3.1 If iskaz.........................................................................................................................................................33
3.2 If Else iskaz .................................................................................................................................................37
3.3 Boolean vrijednosti .....................................................................................................................................41
3.4 Switch iskaz ................................................................................................................................................42
3.5 For Petlja ....................................................................................................................................................45
3.6 While petlja ................................................................................................................................................51

4. Nizovi u Javi ................................................................................................................................................. 52


4.1 Java nizovi ..................................................................................................................................................52
4.2 Nizovi i petlje ..............................................................................................................................................55
4.3 Sortiranje nizova ........................................................................................................................................57
4.4 Nizovi i stringovi .........................................................................................................................................59
4.5 Višedimenzionalni nizovi ............................................................................................................................62
4.6 Liste nizova .................................................................................................................................................65

5. Java String metode ...................................................................................................................................... 67

138 | S t r a n a
Kulturni centar “Kralj Fahd” Java

5.1 Java i stringovi ............................................................................................................................................67


5.2 Metode: toUpperCase i toLowerCase .........................................................................................................68
5.3 Metoda: compareTo ...................................................................................................................................69
5.4 Metoda: indexOf ........................................................................................................................................70
5.5 Metoda: substring ......................................................................................................................................73
5.6 Metoda: equals ..........................................................................................................................................80
5.7 Metoda: charAt ..........................................................................................................................................81
5.8 Metoda: replace .........................................................................................................................................83
5.9 Ispis formatiranih stringova .......................................................................................................................84

6. Java metode ................................................................................................................................................ 89


6.1 Pozivanje metoda .......................................................................................................................................91
6.2 Prosljeđivanje vrijednosti metodama .........................................................................................................96
6.3 Prosljeđivanje višestrukih vrijednosti .........................................................................................................99

7. Klase .......................................................................................................................................................... 101


7.1 Varijable instance .....................................................................................................................................103
7.2 Konstruktor klase .....................................................................................................................................105
7.3 Pristup varijablama instance ....................................................................................................................108
7.4 Nasljeđivanje ............................................................................................................................................116

8. Upravljanje greškama ................................................................................................................................ 121


8.1 Praćenje stack-a .......................................................................................................................................124
8.2 Upravljanje logičkim greškama ................................................................................................................128

9. ZAKLJUČAK ................................................................................................................................................ 132

10. LITERATURA .......................................................................................................................................... 133

11. SADRŽAJ SLIKA ...................................................................................................................................... 134

12. SADRŽAJ TABELA ................................................................................................................................... 137

139 | S t r a n a

You might also like