Pitanje oko tmp: [java]

C, C++, Java, PHP, Ruby...

Moderator/ica: Moderatori/ce

Pravila foruma
U naslovu teme unutar uglatih zagrada navesti o kojem jeziku je riječ. Primjer: [Java]
Odgovori
MarkoN
Postovi: 12
Pridružen/a: 18 lip 2014, 19:04
Spol: m
OS: Windows

Pitanje oko tmp: [java]

Post Postao/la MarkoN »

Da li neko zna kako ovo tacno funkcionise:
for (Vozilo tmp : listaVozila) {
if (tmp.getNaziv().equals(naziv)) {

ovo tmp mi bas nije jasno.

Kod: Označi sve

else if (sifra.equals("") && !naziv.equals("")) {
            for (Vozilo tmp : listaVozila) {
                if (tmp.getNaziv().equals(naziv)) {
                    rezultat += "\n" + tmp.toString();
                    nadjen = true;
                }
Unapred hvala!
Avatar
PunkBastard
Postovi: 1975
Pridružen/a: 19 srp 2011, 22:39
Spol: M
OS: Debian 7 Wheezy
Lokacija: wonderland

Re: Pitanje oko tmp: [java]

Post Postao/la PunkBastard »

"tmp" je varijabla ? (retoričko pitanje)
I don't want to be a human. I want to see gamma rays, I want to hear x-rays and I want to smell dark matter. I want to reach out with something other than this prehensile paws and feel the solar wind of a super nova flowing over me.
Avatar
ante003
Postovi: 664
Pridružen/a: 11 tra 2010, 16:35
Spol: M
OS: Arch

Re: Pitanje oko tmp: [java]

Post Postao/la ante003 »

MarkoN je napisao/la:Da li neko zna kako ovo tacno funkcionise:
for (Vozilo tmp : listaVozila) {
if (tmp.getNaziv().equals(naziv)) {

ovo tmp mi bas nije jasno.

Kod: Označi sve

else if (sifra.equals("") && !naziv.equals("")) {
            for (Vozilo tmp : listaVozila) {
                if (tmp.getNaziv().equals(naziv)) {
                    rezultat += "\n" + tmp.toString();
                    nadjen = true;
                }
Unapred hvala!

Znaci, u svojoj listi imas nekoliko objekata koji su tipa Vozilo.

For petlja koja je gore se jos naziva foreach petlja koja je malo drugacija od for petlje, ali ideja je ista i sluzi za iteriranje kroz svaki element liste.

Znaci,
obicna petlja bi isla nekako ovako:

Kod: Označi sve

int len = listaVozila.length;
for(int i = 0; i < len; i++){
   Vozilo tmp = listaVozila.get(i);
   doSomethingElse();
}
U gornjem primjeru imas "obicnu" for petlju koja ide o listi, ali sa svakog i-tog mjesta dohvaca objekt tipa Vozilo. Ako si ikad radio u C++u, to mozes poistovjetiti sa ovim:

Kod: Označi sve

int niz[] = new int [N];
for (int i = 0; i < N;i++)
   cout << niz[i]<<endl;
gdje je N neki prirodan broj.

For petlja koja tebe zanima je skracena verzija "obicne" i ona zapravo radi ovo:

Kod: Označi sve

for(Vozilo tmp: listaVozila) 
umjesto da imas iterator i, ovdje ti se for petlja sama brine gdje se nalazi iterator, i u svakom koraku vrati objekt. Znaci, gore si imao

Kod: Označi sve

Vozilo tmp = listaVozila.get(i)
ovdje imas samo Vozilo tmp: listaVozila koje zamjenjuje get metodu.

Python ima slicnu stvar, samo se tamo zove operator "in". I onda mozes imati slucaj:

Kod: Označi sve

for tmp in listaVozila:
   doSomething
Gdje na pocetku tmp bude prvi element, pa u sljedecoj iteraciji drugi, itd. ali ono sto je bitno da se sama for petlja brine o dohvacanju elementa, dok u "obicnoj" for petlji, to moras raditi ti.

Evo, nadam se da je sad malo jasnije.
MarkoN
Postovi: 12
Pridružen/a: 18 lip 2014, 19:04
Spol: m
OS: Windows

Re: Pitanje oko tmp: [java]

Post Postao/la MarkoN »

Hvala,dosta mi je sada jasnije. :)
Avatar
ante003
Postovi: 664
Pridružen/a: 11 tra 2010, 16:35
Spol: M
OS: Arch

Re: Pitanje oko tmp: [java]

Post Postao/la ante003 »

Super :)
Odgovori