Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 11 odgovora
  • 3.618 pregleda

Najnovija ↓

problem sa dupliranjem stavki u combo boxu? 06.06.2007. u 13:21 · pre 236 meseci #1
Ljudi potrebna mi je hitno pomoc! Radim maturski vezan za bazu i na osnovu pretrage popunjavam kombo box. Sada u toj pretrazi neke vrednosti su mi iste, ali ja necu da mi se ponavljaju. Pokusao sam da namestim da ne dodaje vrednost ako je ista ali tada on upisuje sve vrednosti redom. Pokusao sam da namestim da kada doda vec postojecu vrednost da je zatim odma izbaci ali mi tada izbacuje izuzetak java.sql.SQLException: no data found

Evo sta sam pokusavao, ovo je pokusaj sa izbacivanjem vec postojeceg:

Code:

int i=0;
while(rset.next()){   
            proizvodjac_pad.addItem(rset.getString(1));
            rez=rset.getString(1);            
            if(proizvodjac==rez){
           proizvodjac_pad.removeItemAt(i);}
            proizvodjac=rez;
            i++;
        }


Evo i pokusaja da iste vrednosti ne doda:

Code:

while(rset.next()){   
            rez=rset.getString(1);            
            if(proizvodjac!=rez)
           proizvodjac_pad.addItem(rez);
            proizvodjac=rez;
        }


Molim vas za pomoc, jer sam proveravao na papiru ali u mojoj proveri po 10 put sve radi kako treba u ovom drugo slucaju, a u ovom prvom mi nije jasan taj izuzetak ni malo. U cemu je greska, ili znate resenje? Hvala unapred...
Re: problem sa dupliranjem stavki u combo boxu? 06.06.2007. u 13:27 · pre 236 meseci #2
Ljudi ne morate se muciti, resio sam problem. Samo sam u ovom drugom slucaju kada kazem da se ne stavi u combo ako je isti umesto != pisao sa equals i radi... :)
Re: problem sa dupliranjem stavki u combo boxu? 06.06.2007. u 15:06 · pre 236 meseci #3
E ovako, posto sam se dosta namucio sa ovim uporedjivanjem Stringova, da li neko moze da mi pojasni razliku izmedju ova dva:

String1==String2

i

String1.equals(String2)

Sta se gde uporedjuje posto mi to nije ni malo jasno a znam da nije isto...
Re: problem sa dupliranjem stavki u combo boxu? 06.06.2007. u 15:30 · pre 236 meseci #4
pa ne koristis == operater jer on proverava da li su 2 objects potpuno
ista. Npr. dva stringa mogu da budu dva razlicita objecta ali da imaju
istu vrednost.

Zato treba da koristis .equals() methodu koja uporedjuje stringove da
vidi da li su isti.

jel jasnije sada?
Re: problem sa dupliranjem stavki u combo boxu? 06.06.2007. u 16:07 · pre 236 meseci #5
Ukoliko se radi o objektima, a ne o primitivnim tipovima (int, double, float..), dva objekta se porede po vrednosti samo pomocu equals metode.

Kada uradis if (a == b), a radi se o objektima, ti samo poredis da li dve reference (a i b) pokazuju na isti objekat, a ne da li je sadrzaj ta dva objekta identican.

Potrazi na netu detaljnije objasnjenje svakako, posto je ovo kljucna stvar za pravilno razumevanje nacina na koji objekti funkcionisu u Javi.
Re: problem sa dupliranjem stavki u combo boxu? 06.06.2007. u 22:24 · pre 236 meseci #6
OK, citao sam na netu i ukapirao sam u cemu je stvar. Samo mi nesto nije jasno. Ako mozes da mi pojasnis. Konkretno u ovom primeru radim neku proveru, ako u combo boxu pise "..." onda treba da izabci neku gresku. E sada to uporedjivanje sam stavio sa == a ne sa equals() i radi kako treba. Ali kada sam isto tako u combo boxu uporedjivao pretrazen rezultat iz baze i neki postojeci String onda nije radilo. Da li je to zato sto je ovo jedna od tih promenljivih bila dobijena iz baze? A ovo prvo radi konkretno ovako:

Code:
 if((String)Kombo.getSelectedItem()=="..."){...} 


a za ovo drugo koje ne radi vec pise kod gore. Da li mozes samo da mi pojasnis zasto ovo radi a ono nije htelo da bi u postpunosti razumeo ovaj problem...
Re: problem sa dupliranjem stavki u combo boxu? 06.06.2007. u 22:44 · pre 236 meseci #7
Vec si dobio odgovor.
Operator == koristis samo za uporedjivanje primitivnih tipova.
Za uporedjivanje stringova uvek, ali ponavljam UVEK treba da koristis equals() ili equalsIgnoreCase() metode.
Ako imalo znas principe java jezika znas da je String klasa tj. "nesto" je objekat klase String.
Objekte u javi ne mozes da poredis sa operatorom == (jer ne postoji preklapanje operatora u javi) vec
se redefinisu metode kao sto su compare() i equals().
Potpis
Sad mu nije nista, ubio si ga k'o zeca...
Re: problem sa dupliranjem stavki u combo boxu? 08.06.2007. u 13:10 · pre 236 meseci #8
Razumem ja vas ljudi, razumem i principe Java jezika, samo mi nije jasno sledece. Dat je kod:

Code:
 
String a="blabla";
if(a=="blabla")a="aaaaa";


U ovom primeru ce ovo poredjenje biti tacno. Zasto? Zasto onda i String a i String "blabla" pokazuju na isti objekat? Razumem ja vas da mora meto da equlas(), ali da li mozete i ovo da mi pojasnite jer bih zeleo da znam zasto ovo poredjenje ima vredonst true? Hvala...
Re: problem sa dupliranjem stavki u combo boxu? 08.06.2007. u 14:43 · pre 236 meseci #9
Citat:
dragan_bg_88: Razumem ja vas ljudi, razumem i principe Java jezika...


Izgleda da bas i ne razumes.
Stringovi su immutable objekti. Sto prakticno znaci da su ne promenjivi i da moze da postoji jedan
unique string prilikom inicijalizacije.

Tako da mozes uradis:
Code:
String a = "asdf";
String b = "asdf";
if(a == b){
   System.out.println("Match!");
}


Znaci a i b su reference koje pokazuju na isti objekat.
Potpis
Sad mu nije nista, ubio si ga k'o zeca...
Re: problem sa dupliranjem stavki u combo boxu? 08.06.2007. u 16:10 · pre 236 meseci #10
Samo da se nadovezem..
A ako uradis

Code:
String a = new String ("asdf");
String b = new String ("asdf");
if(a == b){
   System.out.println("Match!");
}


sistem nece nista ispisati, odnosno, if uslov ce biti false.

U prvom slucaju obe reference pokazuju na isti objekat, a u drugom imas dve referenece, koje pokazuju na dva razlicita objekta sa istim sadrzajem.
Upravo u tome i jeste razlika izmedju poredjenja referenci i equals metode.

Re: problem sa dupliranjem stavki u combo boxu? 08.06.2007. u 17:04 · pre 236 meseci #11
E a ako uradis

Code:

String a = new String ("asdf");
String b = new String ("asdf");
if(a.intern() == b.intern()){
   System.out.println("Match!");
}

dobices .. ?
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme