NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 8 - Ošetření uživatelských vstupů v C# .NET

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
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í ?

Odpovědět
6.2.2015 21:21
Jestli jste dobří nahrnou na Vás spoustu práce. Jestli jste sakra dobří, tak se jí dokážete zbavit.
Avatar
Odpovídá na Michal Gros
simon.steiner:28.2.2015 15:11

Ano můžeš napsat

Console.ReadKey(false)
 
Odpovědět
28.2.2015 15:11
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í :-)

 
Odpovědět
17.3.2015 21:55
Avatar
Ondřej Štorc
Tvůrce
Avatar
Odpovídá 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 :)

Odpovědět
17.3.2015 22:15
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Odpovídá 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 :-)

 
Odpovědět
17.3.2015 22:40
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 ();

 
Odpovědět
23.12.2015 19:17
Avatar
Odpovídá 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;
                    }
                }
 
Odpovědět
16.5.2016 0:58
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;
                   }


            }

           }
Odpovědět
29.5.2016 17:34
Nepropadejte panice.
Avatar
Petr Šťastný
Tvůrce
Avatar
Odpovídá 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

Editováno 30.5.2016 20:41
 
Odpovědět
30.5.2016 20:41
Avatar
Odpovídá 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.

Odpovědět
30.5.2016 22:19
Nepropadejte panice.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 149.