C# meni Kako?

poruka: 4
|
čitano: 884
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
14 godina
neaktivan
offline
C# meni Kako???

Zelim napravit jednostavni meni gdje korisnik moze izabrati izmedju Kontinenta i
drzave a nakon toga da izabere koji kontinent ili koja drzava
Ispod se nalazi kod koji sam pisao
pa ako ga neko moze preuredit da radi kako treba bio bi mu zahvalan.



using System;

class Meni
{
    public static void Main()
    {
        char izbor;
        for (; ; )
        {
            do
            {
                Console.WriteLine("Izaberite");
                Console.WriteLine("1 Kontinent");
                Console.WriteLine("2 Drzava");
                Console.WriteLine("-=-=-=-=-=-=-");

                do
                {
                    izbor = (char)Console.Read();
                }
                while (izbor == '\n' | izbor == '\r');

            }

            while (izbor < '1' | izbor > '2' & izbor != 'q');
            if (izbor == 'q') break;

            switch (izbor)
            {
                case '1':
                    {
                        char kontinenti;
                        Console.WriteLine("Izaberite neki Kontinent");
                        Console.WriteLine("1 Amerika");
                        Console.WriteLine("2 Australija");
                        Console.WriteLine("3 Afrika");
                        Console.WriteLine("4 Azija");
                        Console.WriteLine("5 Europa");
                        Console.WriteLine("------------------------");
                        kontinenti = (char)Console.Read();

                        if (kontinenti == '1')
                        {
                            Console.WriteLine("Amerika");
                        }

                        if (kontinenti == '2')
                        {
                            Console.WriteLine("Australija");
                        }
                        if (kontinenti == '3')
                        {
                            Console.WriteLine("Afrika");
                        }
                        if (kontinenti == '4')
                        {
                            Console.WriteLine("Azija");
                        }
                        if (kontinenti == '5')
                        {
                            Console.WriteLine("Europa");
                        }



                    }
                    break;

                case '2':
                    {
                        char drzave;
                        Console.WriteLine("Izaberite neku Drzavu");
                        Console.WriteLine("1 Germany");
                        Console.WriteLine("2 France");
                        Console.WriteLine("3 India");
                        Console.WriteLine("++++++++++++++++++++++++");
                        drzave = (char)Console.Read();

                        if (drzave == '1')
                        {
                            Console.WriteLine("Germany");
                        }
                        if (drzave == '2')
                        {
                            Console.WriteLine("France");
                        }
                        if (drzave == '3')
                        {
                            Console.WriteLine("India");
                        }
                    }
                    break;
            }
        }
    }
}

 
0 0 hvala 0
17 godina
moderator
online
RE: C# meni Kako???
Alan92 kaže...

using System;

class Meni
{
    public static void Main()
    {
        char izbor;
        for (; ; )
        {
            do
            {
                Console.WriteLine("Izaberite");
                Console.WriteLine("1 Kontinent");
                Console.WriteLine("2 Drzava");
                Console.WriteLine("-=-=-=-=-=-=-");

                do
                {
                    izbor = (char)Console.Read();
                }
                while (izbor == '\n' | izbor == '\r');

            }

           while (izbor < '1' | izbor > '2' & izbor != 'q');
            if (izbor == 'q') break;

            switch (izbor)
            {
                case '1':
                    {
                        char kontinenti;
                        Console.WriteLine("Izaberite neki Kontinent");
                        Console.WriteLine("1 Amerika");
                        Console.WriteLine("2 Australija");
                        Console.WriteLine("3 Afrika");
                        Console.WriteLine("4 Azija");
                        Console.WriteLine("5 Europa");
                        Console.WriteLine("------------------------");
                       kontinenti = (char)Console.Read();

                        if (kontinenti == '1')
                        {
                            Console.WriteLine("Amerika");
                        }

                        if (kontinenti == '2')
                        {
                            Console.WriteLine("Australija");
                        }
                        if (kontinenti == '3')
                        {
                            Console.WriteLine("Afrika");
                        }
                        if (kontinenti == '4')
                        {
                            Console.WriteLine("Azija");
                        }
                        if (kontinenti == '5')
                        {
                            Console.WriteLine("Europa");
                        }



                    }
                    break;

                case '2':
                    {
                        char drzave;
                        Console.WriteLine("Izaberite neku Drzavu");
                        Console.WriteLine("1 Germany");
                        Console.WriteLine("2 France");
                        Console.WriteLine("3 India");
                        Console.WriteLine("++++++++++++++++++++++++");
                       drzave = (char)Console.Read();

                        if (drzave == '1')
                        {
                            Console.WriteLine("Germany");
                        }
                        if (drzave == '2')
                        {
                            Console.WriteLine("France");
                        }
                        if (drzave == '3')
                        {
                            Console.WriteLine("India");
                        }
                    }
                    break;
            }
        }
    }
}

Uoci ovo oznaceno zelenim markerom - vrtis petlju sve dok se ne stisne broj koji poziva neku naredbu iz pocetnog izbornika.

 

Sad uoci ovo sa zutim markerom - uopce ne vrtis petlju! Dakle, kao prvo tu riskiras da korisnik ne upise valjani broj drzave. Kao drugo - sad se mozda pitas zbog cega ti preleti preko svega toga? Zato sto, kad korisnik upise neki broj i stisne Enter na prvom izborniku, funkcija Read skine samo prvi znak - znaci, skine samo broj 1 ili 2, a u bufferu od tipkovnice ostanu dva znaka CR+LF (to su znakovi za tipku Enter)!

 

Rjesenje? U drugome meniju prije, prije nego radis Console.Read() napisi Console.ReadLine(). Znaci:

 

                        Console.ReadLine();
                       
                        do { kontinenti = (char)Console.Read(); }
                         while (kontinenti < '1' | kontinenti > '5');

17 godina
moderator
online
C# meni Kako???

Da, preporucam ti i da svih tih if-then za drzave i kontinente koristis switch - bit ce ti puno preglednije. Takodjer, koristis praznu for-petlju - umjesto toga, mozes imati jedan vanjski do-while (izbor != '3') pa da ti izbor '3' znaci izlaz iz programa.

 
0 0 hvala 0
14 godina
neaktivan
offline
C# meni Kako?

Mnogo hvala na odgovoru.Pokusat cu ovo skuzit hvala jos jednom

 
0 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice