[ mucky @ 22.02.2002. 19:26 ] @
Pravim neki programchic u kom se korisnik pita da li ce se neki prevod pojavljivati ranije ili kasnije, na sta korisnik treba da odgovori sa R ili K. E, ako korisnik unese nesto drugo, na ekranu se ispise da je unet pogresan znak, petlja se obrne, ponovi se pitanje (ranije/kasnije?) i ceka se novi unos. E, ovo je varijanta kada sve radi kako ja hocu, ali na zalost nije tako. Kad unesem neki drugi znak, petlja obrne dva puta i ispise nepotrebne stvari a ne saceka korisnikov unos! Tek treci put ceka na unos! Prilazem source pa ako neko zna u cemu je problem molio bih da javi, hvala :)
[ tweeester @ 22.02.2002. 22:49 ] @
Prilicno je jednostavno ... ti zelis da ucitas jedan karakter, ali Java ocita ulazne karaktere tek kada se pritisne 'enter' i onda se u ulaznom baferu nadju tri karaktera: slovo + 0x0D + 0x0A (druga dva prestavaljaju novi red tj. 'enter') i zato se petlja obrne 3 puta (na Windows-u) ili 2 puta (na Linux-u gde je enter prestavljen samo jednim karakterom 0x0D). dakle, resenje je da procitas ceo string i da ga uporedis sa "R\n" ili "K\n" .. ili mu samo uzmi prvo slovo .. ili ... ma snaci ces se vec

pozdrav
[ misk0 @ 22.02.2002. 23:03 ] @
I mozes da koristis upperCase funkciju bez toga da provjeravas kakav je unos.
Odnosno malo slovo ce da pretvori u veliko, a veliko ce da ostane veliko ;)
[ mucky @ 22.02.2002. 23:15 ] @
Hvala na brzim odgovorima (iako je petak vece :) ) problem sam resio tako sto umesto f-je read() koristim f-ju charAt() pa uzimam samo prvi element bafera, tj. onaj karakter koji meni i treba... A ovo za upperCase() sam znao ali sam se setio tek kad si mi napisao da tako radi, hvala jos jedanput :)
[ MoHicAn @ 03.03.2002. 18:10 ] @
Znas malo mi je cudan tvoj kod !
Zasto unutar petlje imas opet proveru if (RanijeKasnije != 'R' && RanijeKasnije != 'K') kad ti je to uslov za petlju while (RanijeKasnije != 'R' && RanijeKasnije != 'K'). Mislim kolko sam ja video java je slicna cpp-u samo sto nema ove petlje. Ovo sto si ti napisao je jedino razumljivo ako se kod ove petlje do .... while prvo izvrsava petlja pa onda vrsi provera ali ako je tako onda je bolje koristiti neku drugu petlju. Mislim ovako bas i nije najlepse/najracionalnije.
[ mucky @ 03.03.2002. 18:54 ] @
Citat:
MoHicAn:
Znas malo mi je cudan tvoj kod !
Zasto unutar petlje imas opet proveru if (RanijeKasnije != 'R' && RanijeKasnije != 'K') kad ti je to uslov za petlju while (RanijeKasnije != 'R' && RanijeKasnije != 'K'). Mislim kolko sam ja video java je slicna cpp-u samo sto nema ove petlje. Ovo sto si ti napisao je jedino razumljivo ako se kod ove petlje do .... while prvo izvrsava petlja pa onda vrsi provera ali ako je tako onda je bolje koristiti neku drugu petlju. Mislim ovako bas i nije najlepse/najracionalnije.


Pa... do-while je vrsta petlje kod koje se prvo izvrsi telo petlje pa onda proverava uslov, znaci obrnuto od while-do. Ta if grana sluzi da kad prvi put udjes u petlju, proveri da li je unos ispravan pa ako nije ispise poruku o tome. E sad, koliko ja vidim (a mozda ne vidim dobro) jedina losa stvar kod ovoga je sto dva puta proveravam isti uslov, sto bi se dalo resiti uvodjenjem dodatne logicke promenljive u koju bi trpao rezultat ove provere... A to za neku drugu petlju... Od petlji u Javi imas
for (int brojac=0; brojac < necega; brojac++) naredba
onda imas while (uslov) do naredba
i imas do naredba while (uslov)
pa ti if (imas && (bolje || lepse || brze || kvalitetnije resenje)) od mog a koje ne koristi petlju koju ja koristim then baci ga da pogledam i naucim nesto :)))