[c#]switch jak se vrátit na začátek? – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

[c#]switch jak se vrátit na začátek? – .NET – Fórum – Programujte.com[c#]switch jak se vrátit na začátek? – .NET – Fórum – Programujte.com

 

Figa0
Super člen
29. 11. 2008   #1
-
0
-

Ahoj mám tento kod.



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DailyRoutine
{
class MainClass
{

public static void zapis()
{

string hodnota = Console.ReadLine();
Console.WriteLine(hodnota);
int vyber = int.Parse(hodnota);

}

public static void Main(string[] args)
{

Console.WriteLine("Další z těch obyčejných pátků. Přišel jsi domů ze školy a není do čeho píchnout.Co chceš dělat?");

Console.WriteLine("1.Jako obvykle si půjdu zapnout kompl a zkouknu si mail.\n2.Jdu ven třeba někoho známeho potkám a bude hned co dělat.\n3.Mám hlad jdu vybrakovat ledničku.");

string hodnota = Console.ReadLine();
Console.WriteLine(hodnota);
int vyber = int.Parse(hodnota);

switch (vyber)
{
case 1:
Console.WriteLine("Nedočkavě vyplňuješ login na e-mail. Jako vždy se ti to povede, až na počtvrté. Super,píše ti Pavel(bestfriend), že jedou dnes večer na chatu pařit a ptá se jestli nechceš jít s nimi");
Console.WriteLine("1.O ničem nepřemýšlíš a odpovídáš, že pojedeš.\n2.Kašleš na to nikam se ti nechce a zůstáváš doma.");
string hodnota1 = Console.ReadLine();
int vyber1 = int.Parse(hodnota1);


switch (vyber1)
{
default:
Console.WriteLine("Prosím volte z odpovědí 1 nebo 2.");
zapis();
break;
case 1:
Console.WriteLine("A");
break;
case 2:
Console.WriteLine("B");
break;

}



break;
case 2:
Console.WriteLine("B");
break;
case 3:
Console.WriteLine("C");
break;
default:
Console.WriteLine("Prosím vyberte z 1, 2 nebo 3.");
break;
}

}
}
}


A potřebuji aby když se ve switchi vyber1 zmáčkne něco jiného, než 1 nebo 2, aby jsem se vrátil na začátek switche. Zatím jsem se dostal jen k tomu , že mohu znovu zadat hodnotu pomocí metody (zapis), jenže to jak sami uznáte mi je k ničemu. Předem děkuji za odpověď.

Nahlásit jako SPAM
IP: 87.249.133.–
zonda0
Stálý člen
29. 11. 2008   #2
-
0
-

pomocou metódy :

static void Main(string[] args)

{
consolovaAplicacia();
}

private static void consolovaAplicacia()
{
Console.WriteLine("1:zadal si 1\n2:zadaô si 2");
string hodnota = Console.ReadLine();
Console.WriteLine(hodnota);
int vyber = int.Parse(hodnota);
switch (vyber)
{
case 1: Console.WriteLine("DOBRE"); break;
case 2: Console.WriteLine("DOBRE"); break;
default: Console.WriteLine("Zle vyber iba 1 alebo 2");
consolovaAplicacia(); break;
}
}

Nahlásit jako SPAM
IP: 91.127.6.–
Všetko by malo byt urobene tak jednoducho ako je možne ale nie jednoducho :) .Albert Einstein [br] ----------------------------------------- [br] Ak nájdete chyby v text tak sorri :P.
Figa0
Super člen
29. 11. 2008   #3
-
0
-

No ale co kdyz pak ten case budu dále větvit? To by se přeci pořád opakovalo. To neexistuje příkaz vrať se na začátek?

Nahlásit jako SPAM
IP: 87.249.133.–
29. 11. 2008   #4
-
0
-

To Figa : Dá se to zařídit, ale v případě OOP bych to považoval za chybu v návrhu.

Nahlásit jako SPAM
IP: 84.21.124.–
Dušan Janošík | web: djanosik.cz, @djanosik
Figa0
Super člen
29. 11. 2008   #5
-
0
-

Dobre tak to delat nebudu. Jak to ale aplikovat na ten muj kod? Nějak se mi to nedaří. Přeco když budu u 10-té otázky tak jen kvůli tomu, že jsem spletl číslo dělat celé znovu.

Nahlásit jako SPAM
IP: 87.249.133.–
Figa0
Super člen
29. 11. 2008   #6
-
0
-

Nebo se to da udelat uplne jinak? Ma to byt textová hra, kterou pozdeji importuji do WinAPI

Nahlásit jako SPAM
IP: 87.249.133.–
29. 11. 2008   #7
-
0
-

To Figa : Pokud musím v konzolové aplikaci čekat na vstup uživatele a mám mu nabidnout možnost začít znovu (opravit nějakou volbu), můžu využít třeba cyklus.

Nahlásit jako SPAM
IP: 84.21.124.–
Dušan Janošík | web: djanosik.cz, @djanosik
Quiark0
Věrný člen
29. 11. 2008   #8
-
0
-

k řešení zondy: Pokud se nemýlím, jde o rekurzivní volání té samé funkce, což zrovna v tomhle případě nechceme. Sice to bude fungovat, ale je to špatně.

Figa: řešením je cyklus (třeba while). Není to sice úplně primitivní řešení, ale takhle se to dělá a naučit se to stejně budeš muset. Tip: když si dáš kus kódu do metody, budeš tam místo x řádků mít jen volání té metody a bude to přehlednější.

Nahlásit jako SPAM
IP: 147.251.68.–
Figa0
Super člen
29. 11. 2008   #9
-
0
-

Děkuji moc použiji while...do . Takže mám dávat každý výběr do metody? Jak ale potom přidělovat proměnné?

Nahlásit jako SPAM
IP: 87.249.133.–
Quiark0
Věrný člen
29. 11. 2008   #10
-
0
-

Do metod dej ten kód, který se tam hodí. A proměnné buď můžeš mít ve třídě, takže na ně všechny metody dané třídy uvidí, nebo je můžeš posílat do metody a pak posílat výsledky zpátky (normálně přes parametry a návratové hodnoty).

Nahlásit jako SPAM
IP: 147.251.68.–
Figa0
Super člen
29. 11. 2008   #11
-
0
-

Predstavoval jsem si to tak ze budu do sebe vnorovat switche a na konci kazdeho bude v defaultu, ze kdyz ta hodnota bude jina nez pocet case tak se switch zacne provadet od zacatku. Ted v tom mam uplnej gulas. Je to realizovarelne?

Nahlásit jako SPAM
IP: 87.249.133.–
paul270
Návštěvník
29. 11. 2008   #12
-
0
-

No aby se switch znova vyhodnotil, tak nějak musíš skočit na jeho začátek. Takže se můžeš vrátit třeba cyklem.

Nahlásit jako SPAM
IP: 88.103.71.–
Figa0
Super člen
29. 11. 2008   #13
-
0
-

Muzete prosím to napsat jak ten cyklus použít. Přiznáms e už se mi to dnes nechce zkoušet. Nechal bych to, až na zítra.

Nahlásit jako SPAM
IP: 87.249.133.–
crAzY^
~ Moderátor
+10
Grafoman
30. 11. 2008   #14
-
0
-



int f;
do {
kód...
if(podminka_pro_ukonceni cyklu)
f = -1;
}while(f >= 0);

bude se opakovat dokud bude f vetsi nebo stejne jako nula

Nahlásit jako SPAM
IP: 89.190.64.–
All you need is vision and time.
Figa0
Super člen
30. 11. 2008   #15
-
0
-

Aha, takže jako podmínku pro ukončení cyklu dám že vyber nesmí být větší, než počet voleb...Pokud to dobře chápu.

Nahlásit jako SPAM
IP: 87.249.133.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 36 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý