Aktuálně: Postihly zákazy tvou profesi? Poptávka po ajťácích prudce roste, využij slevové akce 80% výuky zdarma!
Pouze tento týden sleva až 80 % na e-learning týkající se Pythonu
birthday
Avatar
danik.devbook:15.9.2015 23:04

Zdravím, mám problém s tímto: Píše ne všechny cesty kódu vrací hodnotu. Já už ale jinou cestu nevidím.

public string Odpoved(string str)
        {
                foreach (string p in slova.pozdravy)
                {
                    if (str.ToLower().Contains(p))
                    {
                        return "Zdravím";
                    }
                    else
                    {
                        return "Nerozumím";
                    }
                }
        }
 
Odpovědět
15.9.2015 23:04
Avatar
Milan Křepelka
Redaktor
Avatar
Milan Křepelka:16.9.2015 6:20

Když ve slova.pozdravy nebude nic, tak ti to do toho foreache ani neskočí a žádný return nebude "po cestě".

 
Nahoru Odpovědět
16.9.2015 6:20
Avatar
danik.devbook:16.9.2015 7:19

Milan Křepelka
A kde a jak mám ten return napsat? Mám tam dat nějakou podmínku?

 
Nahoru Odpovědět
16.9.2015 7:19
Avatar
Odpovídá na danik.devbook
Martin Turner:16.9.2015 7:27

Ahoj,
popravdě programovat v C# se teprve učím, ale myslím, že problém může být v tom, že cyklus můžeš teoreticky opustit dříve než doleze k return (např. při použití break před if podmínkou), pak metoda nic nevrací.
Return "Nerozumím"; bych tedy vložil až za cyklus foreach.
Prosím ostatní o případnou korekci nebo doplnění.
Díky.

 
Nahoru Odpovědět
16.9.2015 7:27
Avatar
Martin Turner:16.9.2015 7:30

Koukám, že má reakce byla trochu zdlouhavá a že diskuze už začala. :-)

 
Nahoru Odpovědět
16.9.2015 7:30
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na danik.devbook
Michal Štěpánek:16.9.2015 7:58

Musíš mít return tam, kde ten program bude procházet za všech okolností. Např.

public string Odpoved(string str)
        {
                string odpoved = "NIC";
                foreach (string p in slova.pozdravy)
                {
                    if (str.ToLower().Contains(p))
                    {
                        odpoved = "Zdravim";
                    }
                    else
                    {
                        odpoved = "Nerozumím";
                    }
                }
            return odpoved;
        }
Nahoru Odpovědět
16.9.2015 7:58
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na danik.devbook
Libor Šimo (libcosenior):16.9.2015 7:59

Return by mohol byť takto:

public string Odpoved(string str)
        {
                string vystup = "";
                foreach (string p in slova.pozdravy)
                {
                    if (str.ToLower().Contains(p))
                    {
                        vystup = "Zdravím";
                    }
                    else
                    {
                        vystup = "Nerozumím";
                    }
                }
                return vystup;
        }

ale to asi nerieši tvoj problém.
Cyklus asi berie viacej vstupov (neviem koľko ich máš v kolekcii slova.pozdravy) a ty potrebuješ iba jeden výstup typu string. Iné by bolo, keby si vracal pole stringov.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět
16.9.2015 7:59
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Michal Štěpánek
Libor Šimo (libcosenior):16.9.2015 8:01

Bol si o sekundu rýchlejší. :-D

Nahoru Odpovědět
16.9.2015 8:01
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
danik.devbook:16.9.2015 9:44

Dík všem

 
Nahoru Odpovědět
16.9.2015 9:44
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 9 zpráv z 9.