Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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: použití proměny z cyklu mimo cyklus

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Petr Seifert
Člen
Avatar
Petr Seifert:11.10.2018 19:54

Pokud si vytvořím cyklus while, vyžádám si v něm proměnou a cyklus while ukončím, potom chci s proměnou pracovat mimo cyklus tak to nejde, protože uvedená proměna v aktuálním kontextu neexistuje. Zde jde o proměny uzJmeno a heslo1.

Zkusil jsem: Nic, nenapadá mě jak to vyřešit.

Chci docílit: Chci vytvoři aplikaci, ve které se nejdříve zaregistrujete a pak přihlásíte.
Zde máte kód: https://www.itnetwork.cz/…lighter/1107
Proměny budu potřebovat ještě k přihlášení atd..

Editováno 11.10.2018 19:55
Odpovědět
11.10.2018 19:54
The 50-50-90 rule: Anytime you have a 50-50 chance of getting something right, there's a 90% probability you...
Avatar
Odpovídá na Petr Seifert
Neaktivní uživatel:11.10.2018 20:08

Jakýkoliv cyklus po svém ukončení všechny své (teda v sobě založené) proměnné zruší. Musíš ji teda založit ještě před cyklem.
Jestli chceš ověřit, že jméno není jenom hromada mezer nebo prázdné, použij

String.IsNullOrWhiteSpace(uzJmeno)
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
11.10.2018 20:08
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Petr Štechmüller:11.10.2018 20:37

To nedělá jenom cyklus, ale jakýkoliv Scope. Za scope se považuje Třída, funkce, cyklus, podmínka, ale třeba i jenom když napíšeš toto:

void someFunction() {
   int a = 0;
  { // Vytvoření nového scope
    int b = 6;
  }

  int c = a+b; // Tady to zařve, protože proměnná b není definována
}
Nahoru Odpovědět
11.10.2018 20:37
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Odpovídá na Petr Štechmüller
Neaktivní uživatel:11.10.2018 20:40

Díky za upřesnění, třeba u podmínek jsem si nebyl jistý, u tříd a funkcí to beru jako samozřejmost a o tom "blíže neurčeném" scope jsem vůbec nevěděl ;-)

Nahoru Odpovědět
11.10.2018 20:40
Neaktivní uživatelský účet
Avatar
Petr Seifert
Člen
Avatar
Odpovídá na Neaktivní uživatel
Petr Seifert:11.10.2018 20:47

Děkuji takto už mi to funguje.

Console.WriteLine("Prosím proveďte registraci");
            Console.Write("Zadejte Už.jméno:");
            string uzJmeno = "";
            bool jmeno = true;
            while (jmeno)
            {
                uzJmeno = Console.ReadLine();
                if (String.IsNullOrWhiteSpace(uzJmeno))
                {
                    Console.WriteLine("Už.jméno je poviný údaj!");
                    Console.Write("Prosím zadejte platné Už.jméno:");
                }
                else
                {
                    jmeno = false;
                }
            }
            Console.Write("Nyní napište heslo:");
            string heslo1 = "";
            bool heslo = true;
            while (heslo)
            {
                heslo1 = Console.ReadLine();
                if (String.IsNullOrWhiteSpace(heslo1))
                {
                    Console.WriteLine("Heslo je poviný údaj!");
                    Console.Write("Prosím zadejte platné heslo:");
                }
                else
                {
                    heslo = false;
                }
            }
            Console.WriteLine("Úspěšně jste se zaregistrovali.");
            Console.WriteLine("Vaše užJmeno je {0} a vaše heslo je {1}.", uzJmeno, heslo1);
            Console.ReadKey();
Nahoru Odpovědět
11.10.2018 20:47
The 50-50-90 rule: Anytime you have a 50-50 chance of getting something right, there's a 90% probability you...
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 5 zpráv z 5.