Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Zasto moramo koristiti ' ' u switch i while, i zasto je u char-u

[es] :: Java :: Zasto moramo koristiti ' ' u switch i while, i zasto je u char-u

[ Pregleda: 2445 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

miljan9602
Nista

Član broj: 306356
Poruke: 98
*.dynamic.isp.telekom.rs.



+3 Profil

icon Zasto moramo koristiti ' ' u switch i while, i zasto je u char-u16.11.2013. u 21:58 - pre 127 meseci
Pozdrav, radim tu neki primer iz knjige sto sam kupio i dosao sam do koda gde se kombinuju switch i while.

Code:

//Upotreba petlje do-while za obradu izbora iz menija
public class Meni 
{
    public static void main(String args[])
    throws java.io.IOException
    {
        char izbor;
        
        do
        {
            System.out.println("Pomoc za:");
            System.out.println("    1. if");
            System.out.println("    2. switch");
            System.out.println("    3. while");
            System.out.println("    4. do-while");
            System.out.println("    5. for \n");
            System.out.println("Izaberite samo jedno:");
            izbor=(char) System.in.read();
        }
        while(izbor < '1' || izbor > '5');
        
        System.out.println("\n");
        
        switch(izbor)
        {
        case '1':
            System.out.println("Naredba if:\n");
            System.out.println("if(uslov) naredba;");
            System.out.println("else naredba;");
            break;
        case '2':
            System.out.println("Naredba switch:\n");
            System.out.println("switch(izraz) {");
            System.out.println("   case konstanta:");
            System.out.println("   niz naredbi");
            System.out.println("  break;");
            System.out.println("  //  ...");
            System.out.println("}");
            break;
        case '3':
            System.out.println("Naredba while:/n");
            System.out.println("while(uslov) naredba;");
            break;
        case '4':
            System.out.println("Naredba do-while:\n");
            System.out.println("do {");
            System.out.println("  naredba");
            System.out.println("} while(uslov);");
            break;
        case '5':
            System.out.println("Naredba for:\n");
            System.out.println("for(inicijalizacija; uslov; iteracija)");
            System.out.println(" naredba;");
            break;
            
        }
    }

}

Jasno mi je sta kod radi i zasta sluze while i switch, ali mi nije jasan ovaj deo.

"izbor=(char) System.in.read();" znam da je ovo System.in.read(); trazi unos od korisnika, pre jave sam radio u C++ i tamo smo koristili za unos cin << x; // primer
definisali smo promenljivu izbor i ona je tipa char ali zasto smo morali da dodamo i ovo (char) ? Posto sam tek stigao do 5 poglavlja a sa unosom podataka cu raditi tek u
12 poglavlju ovo mi je prvi put da sam koristio tu opciju pa samo malo da mi pojasnite.

izbor=(char) System.in.read(); // Ovde promenljivoj izbor dodajemo unos korisnika ? kao sto bi u C++ bilo cin << izbor; tako je ovde ?
I zasto smo morali da koristimo u while i switchu ' ' na primer '1' '5' zasto jednostavno nije moglo bez toga ? zato sto je char promenljiva znakovnog tipa ?
Probao sam da promenim promenljivu u tip int ali onda kada unesem broj izmedju 1 i 5 on me opet vraca u while ne pusta me iz nje, mozda je ovo malo glupo pitanje za vas iskusnije ali ne znam kome da se obratim, hvala unapred !
 
Odgovor na temu

HeYoo

Član broj: 72595
Poruke: 491



+1017 Profil

icon Re: Zasto moramo koristiti ' ' u switch i while, i zasto je u char-u16.11.2013. u 23:19 - pre 127 meseci
Ne znam za Javu ali izbor=(char) System.in.read(); bi trebala da bude konverzija vracene vrednosti u tip char i dodeljivanje promenljivoj izbor.
Prazna while petlja ceka na odgovor koji je u intervalu ponudjenih stavki menija (od 1 do 5). Sve dok ne uneses korektan odgovor opsega ostajes zaglavljen u while petlji.

Citat:
Probao sam da promenim promenljivu u tip int ali onda kada unesem broj izmedju 1 i 5 on me opet vraca u while ne pusta me iz nje

Ne pusta te iz nje zato sto se ocekuje char (broj izmedju navodnika nije vise int vec char) izmedju '1' i '5'
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
*.dynamic.sbb.rs.



+311 Profil

icon Re: Zasto moramo koristiti ' ' u switch i while, i zasto je u char-u16.11.2013. u 23:21 - pre 127 meseci
Postoji mnogo načina na koje možeš odraditi jednu istu stvar.
U ovom primeru je dat akcenat na upotrebu while i switch konstrukcija,
dok je sam izbor char tip podatka manje-više nebitan (ali je zgodan) i nije ključan.

Funkcija System.in.read() vraća ASCII kod (broj, byte) onoga što čeka na ulazu.
Kada pritisneš 0, System.in.read() vraća 48, za 1 vraća 49, za 2 varća 50, itd...
http://www.cs.cmu.edu/~pattis/15-1XX/common/handouts/ascii.html

Dakle ne moraš u ovom slučaju da koristiš char, možeš i int ili byte ili nešto treće
jedino moraš da znaš kako je "kodirana" vrednost koja te interesuje.

Ako bi koristio int, onda bi uslovi bili ovakvi:
Code:

// int data type
...
while(izbor < 49 || izbor > 53);
...
case 49:
...
case 50:
...


Program će raditi sasvim korektno, međutim možeš primetiti da je
korištenje char podatka mnogo jasnije, čitljivije i zgodnije u ovoj situaciji:
Code:

// char data type
...
while(izbor < '1' || izbor > '5');
...
case '1':
...
case '2':
...


Na kraju i sam vidiš zbog čega nisi mogao da izađeš iz while petlje kada si pisao:
Code:

while(izbor < 1 || izbor > 5);
 
Odgovor na temu

miljan9602
Nista

Član broj: 306356
Poruke: 98
*.dynamic.isp.telekom.rs.



+3 Profil

icon Re: Zasto moramo koristiti ' ' u switch i while, i zasto je u char-u16.11.2013. u 23:58 - pre 127 meseci
Da sad sam skontao ako ocu da koristim promenljivu tipa int,byte ili tako to moram da pisem brojeve iz ASCII coda kao sto si ti napisao 49 za 1 50 za 2 i tako dalje ?

Jel se zato koristi ovo izbor=(char) System.in.read(); ?
Da ne moramo da stavljamo 49 za 1 nego samo stavimo '1' i on ga sam konvertuje u ASCII ?
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
*.dynamic.sbb.rs.



+311 Profil

icon Re: Zasto moramo koristiti ' ' u switch i while, i zasto je u char-u17.11.2013. u 10:01 - pre 127 meseci
Baš tako.
 
Odgovor na temu

miljan9602
Nista

Član broj: 306356
Poruke: 98
*.dynamic.isp.telekom.rs.



+3 Profil

icon Re: Zasto moramo koristiti ' ' u switch i while, i zasto je u char-u17.11.2013. u 11:28 - pre 127 meseci
Jos jedno pitanje, to sto si rekao 49 daje '1', a kako bi napisali mi je trebala na primer vrednost '151' ili '15' ili neki dvocifren ili veci broj ?
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
*.dynamic.sbb.rs.



+311 Profil

icon Re: Zasto moramo koristiti ' ' u switch i while, i zasto je u char-u17.11.2013. u 13:53 - pre 127 meseci
U glavi ne bi trebao i ne smeš da mešaš (poistovećuješ) brojeve i stringove (karaktere).
Dakle int a = 153 nije isto što i string a = '153'.
Iako je čoveku 153 jedno te isto, u programiranju nije takva situacija.

Dakle int a = 153 je numerička vrednost, sa kojom možeš da radiš aritmetičke operacije i slično.

U drugu ruku, string a = '153' je niz karaktera ('1', '5', '3') sa kojima ne možeš da radiš aritmetiku
ali možeš druge operacije koje spadaju u domen rada sa stringovima, itd...

Na kraju, analogno stringu, char a = '1' nije isto što i int a = 1.
Svaki char je u suštini ASCII kod (broj) simbola! (slova, cifre, interpunkcije, itd...)
Npr:
Code:

(int)'A' == 65
(int)'Z' == 90
(int)'8' == 56
(int)'c' == 99


JEDAN CHAR == JEDAN SIMBOL!
JEDAN STRING == NULA ILI VIŠE SIMBOLA!

U slučaju 2-cifrenih, 3-cifrenih vrednosti, ... morao bi da radiš ili preko int-ova
ili preko string-ova i normalno ne preko funkcije System.in.read() koja vraća jedan
jedini kod (char) koji se nalazi na ulazu.

 
Odgovor na temu

miljan9602
Nista

Član broj: 306356
Poruke: 98
*.dynamic.isp.telekom.rs.



+3 Profil

icon Re: Zasto moramo koristiti ' ' u switch i while, i zasto je u char-u17.11.2013. u 14:53 - pre 127 meseci
E hvala ti ! Sada sam skontao o cemu pricas, malo me bila zbunila ova nova funkcija Syste.in.read(); jer nju nisam jos nijednom do sada koristio pa nisam tacno ni razumeo u cemu je fora sve dok nisam procitao ovaj deo tvoje poruke

"U slučaju 2-cifrenih, 3-cifrenih vrednosti, ... morao bi da radiš ili preko int-ova
ili preko string-ova i normalno ne preko funkcije System.in.read() koja vraća jedan
jedini kod (char) koji se nalazi na ulazu."

Hvala ti mnogo !
 
Odgovor na temu

[es] :: Java :: Zasto moramo koristiti ' ' u switch i while, i zasto je u char-u

[ Pregleda: 2445 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.