Kód je zde: http://kod.djpw.cz/tzed
Potíž je jednoduše v tom, že zadané číslo je bráno jako znak, ne jako číslo (se kterým se dá počítat). Co s tím?
Co s tím? Podívat se do dokumentace. TryParse vrací bool a má 2 parametry. První je string ze kterého se má načíst číslo a druhý je ve tvém případě out float.
string inputText = "198.25";
float vystupCislo = 0;
bool success = float.TryParse(inputText, out vystupCislo);
Pomocí návratové hodnoty pak můžeš nastavit defaultní hodnotu výstupu pokud konverze selže.
hu
Chybí ti základy. "Přetížení metody" si můžeš vygůglit. Může existovat několik metod se stejným názvem, ale liší se počtem parametrů a/nebo datovým typem. Proč mu vadí jeden argument bys vyčetl v dokumentaci. Protože metoda TryParse nemá žádné přetížení přijímající jeden parametr. Jak nacpat tvůj příklad? Přečíst si ukázku kódu z mého příspěvku popř. vygůglit si příklady použití TryParse. Jsou i v dokumentaci. A nakonec doporučuji si přečíst tutoriál a projít si jeho příklady krok za krokem. Dobrý tutoriál je třeba na IT network. Prvních několik dílů zdarma, pak je to placený, stojí to několik set Kč.
hu
Při studiu C# používám tuto knihu:
https://books.google.cz/books/about/Programov%C3%A1n%C3%AD_v_C.html?id=yGsWEAAAQBAJ&printsec=frontcover&source=kp_read_button&hl=cs&redir_esc=y#v=onepage&q&f=false
Na straně 162 je něco o přetěžování, ofotil bych to, ale z mobilu teď nemohu použít. Ale nezmoudřel jsem z toho, jak to použít na vyřešení mého problému. Otázka tedy stále zůstává: co s tím?
#5 Montezo
udělám to tak, abych tvůj kod moc nezměnil:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Vítejte v kalkulačce");
Console.WriteLine("Zadejte první číslo:");
float a, b;
if(float.TryParse(Console.ReadLine(), out a))
{
Console.WriteLine("Zadejte druhé číslo:");
if (float.TryParse(Console.ReadLine(), out b))
{
Console.WriteLine("Zvolte si operaci:");
Console.WriteLine("1 - sčítání");
Console.WriteLine("2 - odčítání");
Console.WriteLine("3 - násobení");
Console.WriteLine("4 - dělení");
int volba = 0;
if (int.TryParse(Console.ReadLine(), out volba))
{
float vysledek = 0;
switch (volba)
{
case 1:
vysledek = a + b;
break;
case 2:
vysledek = a - b;
break;
case 3:
vysledek = a * b;
break;
case 4:
vysledek = a / b;
break;
}
if ((volba > 0) && (volba < 5))
Console.WriteLine("Výsledek: {0}", vysledek);
else
Console.WriteLine("Neplatná volba");
Console.WriteLine("Děkuji za použití kalkulačky, aplikaci ukončíte libovolnou klávesou.");
Console.ReadKey();
}
else Console.WriteLine("Chybné zadání VOLBA");
}
else Console.WriteLine("Chybné zadání B");
}
else Console.WriteLine("Chybné zadání A");
}
}
po novu lze použít i:
if(int.TryParse(Console.ReadLine(), out int a)){...
#7 hlucheucho
jemu se cokoliv těžko vysvětluje, zatím nedokázal pochopit ani první lekci. Pokud mu pojmenuješ jinak proměnnou je úplně v prd..i. apd. Divím se, že mám ještě chuť vůbec reagovat. Žádný učený z nebe nespadl, ale tohle je extrém..
A zde nastal další problém.
http://kod.djpw.cz/vzed
Ta hláška o prvním čísle se mi zasekne v nekonečné smyčce (pořád se opakuje). Jak to vyřešit? V podstatě šlo jen o to dát do programu schopnost repete...
Co je "tělo" cyklu? V tvém kódu je to jeden příkaz Console.WriteLine("Zadejte první číslo:"); Ten bude prováděn dokud bude ukončovací podmínka cyklu vracet true; (to bude vždy). Asi potřebuješ aby tělo cyklu bylo více příkazů, tedy blok kódu. Ten je uzavřen mezi složené závorky.
while (podmínka)
{
//vše co chceš dělat v cyklu
}
//co se má dělat po skončení cyklu
hu
#12 Montezo
nebo to lze udělat i takto:
// definice a vše co se má vykonat před smyčkou
while(true)//nekonečná smyčka
{
//vše co chceš dělat v cyklu
if(!podmínka) break; //ukončí smyčku
}
//co se má dělat po skončení cyklu
míň přehledné, ale pro tvé řešení asi vhodnější
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku