Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 8. diel - Ošetrenie užívateľských vstupov v C# .NET

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Michal Gros
Tvůrce
Avatar
Michal Gros :6.2.2015 21:21

Dobrý den leze mi na nervy zobrazeni volby Readkey
zvláště pokud za volbou zobrazuji text.

Například
mNHeplatná klávesa
řeším to tak, že do infa v Console.WriteLine přidávám na začátek \r\n
např

Console.WriteLine("\r\n tohle neni platna volba");

existuje i jiné řešení ?

Odpovedať
Jestli jste dobří nahrnou na Vás spoustu práce. Jestli jste sakra dobří, tak se jí dokážete zbavit.
Avatar
Odpovedá na Michal Gros
simon.steiner:28.2.2015 15:11

Ano můžeš napsat

Console.ReadKey(false)
Avatar
Matěj Prášek:17.3.2015 21:55

Zdravím,
dokázal by mi někdo vysvětlit, proč se dotaz na pokračování převádí na string a nenechá se jako char, jak tomu bylo ve switch na výběr volby? :-) Mám na mysli tuhle část

platnaVolba = false;
       while (!platnaVolba)
       {
               switch (Console.ReadKey().KeyChar.ToString().ToLower())
               {
                       case "a":
                               pokracovat = true;
                               platnaVolba = true;
                       break;
                       case "n":
                               pokracovat = false;
                               platnaVolba = true;
                       break;
                       default:
                               Console.WriteLine("Neplatná volba, zadejte prosím a/n");
                       break;
               }
       }

Děkuji za vysvětlení :-)

Avatar
Ondřej Štorc
Tvůrce
Avatar
Odpovedá na Matěj Prášek
Ondřej Štorc:17.3.2015 22:15

Převedený na string je to z důvodu konverze toho písmena na malý. U charu to taky jde a to pomocí funkce char.ToLower(), ale Davidovi nejspíše přišla tahle varianta přehlednější než to celé zabalovat do závorek :)

Odpovedať
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Odpovedá na Ondřej Štorc
Matěj Prášek:17.3.2015 22:40

Děkuji :-) Nenapadlo mě, že u charu nepůjde použít metoda ToLower() stejně jako u stringu. Teď vím zase o něco víc :-)

Avatar
dleducmanh6
Člen
Avatar
dleducmanh6:23.12.2015 19:17

Ahoj, sestrojil jsem program vypočítávající S trojúhelníku a mám s jedním detailem problém. Na začátku programu si mám napsat kolikrát se mi S vypíše, vypočítat S, a součet obsahů (kolikrát se mi vypíšou tolikrát je vynásobím). Pointa je, že se mi má POUZE S vypsat kolikrát si to vyžádám součet S a kolikrát jsem si to vyžádal ne. :/
Console.Write­Line("Zadej délku strany a výšku na zadanou stranu a vypočítám ti obsah");
int Va = int.Parse (Console.ReadLine ());
int strana_a = int.Parse (Console.ReadLine ());
int děleno = 2;
Console.WriteLine ("Zadej kolikrát chceš abych ti vypsal obsah: ");
int ntá = int.Parse (Console.ReadLine ());
for (int i=0; i < ntá; i++)
{
int S = Va * strana_a / děleno;
Console.WriteLine ("Velikost obsahu je {0} cm čtverečních ", S);
Console.WriteLine ("Obsah jsem ti vypsal {0}krát.", ntá);
int součet_S = S * ntá;
Console.WriteLine ("Součet obsahů je {0}.", součet_S);
}
Console.ReadLine ();

Avatar
Odpovedá na Matěj Prášek
Miroslav Křenek:16.5.2016 0:58

Pokud by se volba na pokračování nenačetla jako string, ale jako char, tak by to šlo třeba takto:

while (!platnaVolba)
                {
                    char an = char.ToLower(Console.ReadKey().KeyChar);
                    switch (an)
                    {
                        case 'a':
                            pokracovat = true;
                            platnaVolba = true;
                            break;
                        case 'n':
                            pokracovat = false;
                            platnaVolba = true;
                            break;
                        default:
                            Console.WriteLine("Neplatná volba, zadejte prosím a/n");
                            break;
                    }
                }
Avatar
Pavla Sklenářová:29.5.2016 17:34

Ahoj, mohli byste mi prosím **polopatě **vysvětlit, jak přesně funguje ten blbuvzdorný (vzdoruje mi to skutečně úspěšně) dotaz na pokračování? Vytvořila jsem si jakous takous šablonu,tak pro inteligentního uživatele to normálně funguje, ale když zadám za sebou 2x neplatnou volbu, program se mi spustí od počátku, místo aby mi pořád házel hlášku "Zkuste to znovu." Vím, že už se to tady jednou řešilo, ale nebyla jsem z toho moc moudrá. Zřejmě mi unikl nějaký základ. Vím, že bych místo bool pokracovat mohla prostě použít string pokracovat a dát tomu hodnotu "ano", ale chci to pochopit. Děkuju moc za snahu. Přikládám kód.

static void Main(string[] args)
       {
           bool pokracovat = true; //Předpokládám, že budu chtít pokračovat. Switch mě hodí sem a srovná svoje hodnoty s touto výchozí.

           while (pokracovat)
           {

               Console.WriteLine("Tady něco dělám a budu to opakovat, dokud si to bfu žádá.");
               Console.WriteLine("Pro pokračování stiskněte A, pro ukončení stiskněte N.");

               string volba = Console.ReadLine().ToLower();
               //načti vstup. v případě, že vstup je a, cyklus bude pokračovat, v případě n nebude.
               //break mě vyhodí sem, musím case porovnat s uživatelským vstupem, nikoliv s pevnou hodnotou.

               switch (volba)
                   {
                       case "a":

                           pokracovat = true;


                           break;

                       case "n":

                           pokracovat = false;

                           Console.WriteLine("Končíme.");
                           Console.ReadLine();

                           break;

                       default:
                           // při pokračovat - true mi najede program, při false mi skončí.

                           Console.WriteLine("Zkuste to znovu. A/N");
                           Console.ReadLine();

                           break;
                   }


            }

           }
Odpovedať
Nepropadejte panice.
Avatar
Petr Šťastný
Tvůrce
Avatar
Odpovedá na Pavla Sklenářová
Petr Šťastný:30.5.2016 20:41

Mozna z defaultu odstranit ten radek Console.ReadLi­ne();? Nezkousel jsem to, ale snad to pomuze

Editované
Avatar
Odpovedá na Petr Šťastný
Pavla Sklenářová:30.5.2016 22:19

Nepomůže. Akorát mě to vrátí zpět na while a jede to znova celé, místo aby se mi zopakovala chybová hláška.

Odpovedať
Nepropadejte panice.
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 149.