Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto kurzu pomocí sady Visual Studio vytvoříte a spustíte konzolovou aplikaci jazyka C# a prozkoumáte některé funkce integrovaného vývojového prostředí (IDE) sady Visual Studio. Tento kurz je 1. částí dvoudílné série kurzů.
V tomto kurzu dokončíte následující úlohy:
- Vytvořte projekt sady Visual Studio.
- Vytvořte konzolovou aplikaci jazyka C#.
- Ladění aplikace
- Zavřete aplikaci.
- Zkontrolujte celý kód.
V 2. části tohoto kurzurozšíříte tuto aplikaci o další projekty, naučíte se triky pro ladění a práci s balíčky od jiných společností než Microsoft.
Požadavky
Musíte mít nainstalovanou sadu Visual Studio.
Pokud nemáte Visual Studio, přejděte na stažení Visual Studio a nainstalujte jej zdarma.
Vytvoření projektu
Začněte vytvořením projektu aplikace v jazyce C#. Typ projektu obsahuje všechny soubory šablony, které potřebujete.
Otevřete Visual Studio a v okně Start vyberte Vytvořit nový projekt.
V okně Vytvořit nový projekt vyberte C# z rozevíracího seznamu jazyků . Ze seznamu typů projektů vyberte Windows a Konzola.
Po použití filtrů jazyka, platformy a typu projektu zvolte šablonu konzolové aplikace a pak vyberte Další.
Poznámka
Pokud šablonu konzolové aplikace nevidíte, vyberte Nainstalovat další nástroje a funkce.
V instalačním programu sady Visual Studio vyberte multiplatformní vývoj pro .NET Core úlohy.
V instalačním programu sady Visual Studio vyberte možnost Upravit. Může se zobrazit výzva k uložení práce. Pokud chcete nainstalovat úlohu, vyberte Pokračovat.
Vraťte se ke kroku 2 v Postupu vytvoření projektu.
V okně Konfigurovat nový projekt zadejte Kalkulačka do pole název projektu. Pak vyberte Další.
V okně Další informace ověřte, že .NET Core 3.1 se zobrazí v poli Target Framework. Pak vyberte Vytvořit.
Visual Studio otevře nový projekt, který obsahuje výchozí kód Hello World. Pokud ho chcete zobrazit v editoru, vyberte soubor kódu Program.cs v okně Průzkumníka řešení, který je obvykle na pravé straně sady Visual Studio.
Výchozí kód Hello World volá metodu WriteLine k zobrazení literálového řetězce Hello, World! v okně konzoly. Pokud stisknete klávesu F5, můžete spustit výchozí program v režimu ladění. Po spuštění aplikace v ladicím programu zůstane okno konzoly otevřené. Stisknutím libovolné klávesy okno konzoly zavřete.
Otevřete Visual Studio a v okně Start vyberte Vytvořit nový projekt.
V okně Vytvořit nový projekt vyberte C# z rozevíracího seznamu jazyků . Ze seznamu typů projektů vyberte Windows a Konzola.
Po použití filtrů jazyka, platformy a typu projektu zvolte šablonu Konzolová aplikace a pak vyberte Další.
Poznámka
Pokud šablonu konzolové aplikace nevidíte, vyberte Nainstalovat další nástroje a funkce.
V Instalačním programu sady Visual Studio vyberte pracovní zátěž pro vývoj desktopových aplikací .NET .
V instalačním programu sady Visual Studio vyberte možnost Upravit. Může se zobrazit výzva k uložení práce. Pokud chcete nainstalovat úlohu, vyberte Pokračovat.
Vraťte se v tomto Postupu vytvoření projektu ke kroku 2.
V okně Konfigurovat nový projekt zadejte do pole Název projektu kalkulačku a potom vyberte Další.
V okně Další informace vyberte rozhraní .NET 8.0 pro pole Target Framework. Pak vyberte Vytvořit.
Visual Studio otevře nový projekt, který obsahuje výchozí kód Hello World. Pokud ho chcete zobrazit v editoru, vyberte soubor kódu Program.cs v okně Průzkumníka řešení, který je obvykle na pravé straně sady Visual Studio.
Jediný řádek kódu vyvolá metodu WriteLine k zobrazení literálového řetězce Hello, World! v konzolovém okně. Pokud stisknete klávesu F5, můžete spustit výchozí program v režimu ladění. Po spuštění aplikace v ladicím programu zůstane okno konzoly otevřené. Stisknutím libovolné klávesy okno konzoly zavřete.
Poznámka
Od .NET 6 vygenerují nové projekty pomocí šablony konzoly jiný kód než předchozí verze. Další informace najdete v tématu Nové šablony jazyka C# generují příkazy nejvyšší úrovně.
Vytvoření aplikace
V této části dokončíte následující úlohy:
- Prozkoumejte základní celočíselnou matematiku v jazyce C#.
- Přidejte kód pro vytvoření základní aplikace kalkulačky.
- Laděním aplikace vyhledejte a opravte chyby.
- Zpřesněte kód, aby byl efektivnější.
Prozkoumání celočíselné matematiky
Začněte základní celočíselnou matematikou v jazyce C#.
V pravém podokně vyberte Program.cs, aby se soubor zobrazil v editoru kódu.
V editoru kódu odstraňte výchozí kód Hello World.
Konkrétně odstraňte řádek, který říká,
Console.WriteLine("Hello World!");.Na svém místě zadejte následující kód:
int a = 42; int b = 119; int c = a + b; Console.WriteLine(c); Console.ReadKey();Všimněte si, že když zadáte kód, nabízí funkce IntelliSense v sadě Visual Studio možnost automatického dokončování položky.
Vyberte zelené tlačítko Start vedle kalkulačky pro sestavení a spuštění programu, nebo stiskněte F5.
Otevře se okno konzoly, které zobrazí součet 42 + 119, což je 161.
(volitelné) Můžete změnit operátor tak, aby změnil výsledek. Například můžete změnit operátor
+v řádkuint c = a + b;kódu na-pro odčítání,*pro násobení nebo/pro dělení. Když pak program spustíte, výsledek se také změní.Zavřete okno konzoly.
V Průzkumníku řešenív pravém podokně vyberte Program.cs, aby se soubor zobrazil v editoru kódu.
V editoru kódu nahraďte výchozí Hello World kód, který říká
Console.WriteLine("Hello World!");.
Řádek nahraďte následujícím kódem:
int a = 42; int b = 119; int c = a + b; Console.WriteLine(c); Console.ReadKey();Pokud zadáte kód, nabízí funkce IntelliSense sady Visual Studio možnost automatického dokončování položky.
Aplikaci sestavíte a spustíte tak, že stisknete F5nebo vyberete zelenou šipku vedle názvu Kalkulačka na horním panelu nástrojů.
Otevře se okno konzoly se součtem 42 + 119, což je 161.
Zavřete okno konzoly.
(volitelné) Můžete změnit operátor tak, aby změnil výsledek. Například můžete změnit operátor
+v řádkuint c = a + b;kódu na-pro odčítání,*pro násobení nebo/pro dělení. Když aplikaci spustíte, výsledek se odpovídajícím způsobem změní.
Přidání kódu pro vytvoření kalkulačky
Pokračujte přidáním složitější sady kódu kalkulačky do projektu.
V editoru kódu nahraďte veškerý kód v Program.cs následujícím novým kódem:
using System; namespace Calculator { class Program { static void Main(string[] args) { // Declare variables and then initialize to zero. int num1 = 0; int num2 = 0; // Display title as the C# console calculator app. Console.WriteLine("Console Calculator in C#\r"); Console.WriteLine("------------------------\n"); // Ask the user to type the first number. Console.WriteLine("Type a number, and then press Enter"); num1 = Convert.ToInt32(Console.ReadLine()); // Ask the user to type the second number. Console.WriteLine("Type another number, and then press Enter"); num2 = Convert.ToInt32(Console.ReadLine()); // Ask the user to choose an option. Console.WriteLine("Choose an option from the following list:"); Console.WriteLine("\ta - Add"); Console.WriteLine("\ts - Subtract"); Console.WriteLine("\tm - Multiply"); Console.WriteLine("\td - Divide"); Console.Write("Your option? "); // Use a switch statement to do the math. switch (Console.ReadLine()) { case "a": Console.WriteLine($"Your result: {num1} + {num2} = " + (num1 + num2)); break; case "s": Console.WriteLine($"Your result: {num1} - {num2} = " + (num1 - num2)); break; case "m": Console.WriteLine($"Your result: {num1} * {num2} = " + (num1 * num2)); break; case "d": Console.WriteLine($"Your result: {num1} / {num2} = " + (num1 / num2)); break; } // Wait for the user to respond before closing. Console.Write("Press any key to close the Calculator console app..."); Console.ReadKey(); } } }Vyberte tlačítko kalkulačky nebo stisknutím klávesy F5 spusťte aplikaci.
Otevře se okno konzoly.
V okně konzoly podle pokynů přidejte čísla 42 a 119 dohromady.
Aplikace by měla vypadat podobně jako na následujícím snímku obrazovky:
V editoru kódu nahraďte veškerý kód v Program.cs následujícím novým kódem:
// Declare variables and then initialize to zero. int num1 = 0; int num2 = 0; // Display title as the C# console calculator app. Console.WriteLine("Console Calculator in C#\r"); Console.WriteLine("------------------------\n"); // Ask the user to type the first number. Console.WriteLine("Type a number, and then press Enter"); num1 = Convert.ToInt32(Console.ReadLine()); // Ask the user to type the second number. Console.WriteLine("Type another number, and then press Enter"); num2 = Convert.ToInt32(Console.ReadLine()); // Ask the user to choose an option. Console.WriteLine("Choose an option from the following list:"); Console.WriteLine("\ta - Add"); Console.WriteLine("\ts - Subtract"); Console.WriteLine("\tm - Multiply"); Console.WriteLine("\td - Divide"); Console.Write("Your option? "); // Use a switch statement to do the math. switch (Console.ReadLine()) { case "a": Console.WriteLine($"Your result: {num1} + {num2} = " + (num1 + num2)); break; case "s": Console.WriteLine($"Your result: {num1} - {num2} = " + (num1 - num2)); break; case "m": Console.WriteLine($"Your result: {num1} * {num2} = " + (num1 * num2)); break; case "d": Console.WriteLine($"Your result: {num1} / {num2} = " + (num1 / num2)); break; } // Wait for the user to respond before closing. Console.Write("Press any key to close the Calculator console app..."); Console.ReadKey();Vyberte tlačítko kalkulačky nebo stisknutím klávesy F5 spusťte aplikaci.
Otevře se okno konzoly.
V okně konzoly podle pokynů přidejte čísla 42 a 119 dohromady.
Aplikace by měla vypadat podobně jako na následujícím snímku obrazovky:
Přidání funkce pro práci s desetinnými čísly
Teď kód upravte a přidejte další funkce.
Aktuální aplikace kalkulačky přijímá a vrací pouze celá čísla. Pokud například spustíte aplikaci a vydělíte číslo 42 číslem 119, bude výsledkem nula, což není přesné.
Oprava kódu pro zlepšení přesnosti zpracováním desetinných míst:
V editoru sady Visual Studio Program.cs stisknutím klávesy Ctrl+H otevřete ovládací prvek Najít a nahradit.
Do ovládacího prvku zadejte int a do pole Nahradit zadejte float.
Vyberte v ovládacím prvku ikony Rozlišovat velká a malá písmena a Shoda celého slova, nebo stiskněte Alt+C a Alt+W.
Vyberte ikonu Nahradit vše nebo stisknutím klávesy Alt+A spusťte funkci hledat a nahradit.
Spusťte aplikaci kalkulačky znovu a vydělte číslo 42 číslem 119.
Aplikace teď místo nuly vrátí desetinné číslo.
Aplikace teď může vytvořit desetinné číslo. Proveďte několik dalších úprav kódu, aby aplikace také mohl vypočítat desetinné čárky.
Pomocí ovládacího prvku Find and Replace změňte každou instanci proměnné
floatnadoublea změňte každou instanci metodyConvert.ToInt32naConvert.ToDouble.Spusťte aplikaci kalkulačky a vydělte číslo 42,5 číslem 119,75.
Aplikace teď přijímá desetinné hodnoty a jako výsledek vrátí delší desetinnou číslici.
V části Upravit kód snížíte počet desetinných míst ve výsledcích.
Ladění aplikace
Vylepšili jste základní aplikaci kalkulačky, ale vaše aplikace ještě nezpracuje výjimky, jako jsou chyby uživatelského vstupu. Pokud se například uživatelé pokusí dělit nulou nebo zadají neočekávaný znak, může aplikace přestat fungovat, vrátit chybu nebo vrátit neočekávaný nečíselný výsledek.
Pojďme si projít několik běžných chyb uživatelského vstupu, vyhledat je v ladicím programu, pokud se tam objeví, a opravit je v kódu.
Spropitné
Další informace o ladicím programu a jeho fungování najdete v tématu První seznámení s ladicím programem sady Visual Studio.
Opravte chybu dělení nulou
Pokud se pokusíte vydělit číslo nulou, aplikace konzoly může zamrznout a pak vám ukáže chybu v editoru kódu.
Poznámka
Někdy se aplikace nezamrzne a ladicí program nezobrazuje chybu dělení nulou. Místo toho může aplikace vrátit neočekávaný nečíselný výsledek, například symbol nekonečna. Stále platí následující oprava kódu.
Pojďme změnit kód pro zpracování této chyby. V Program.csnahraďte kód pro case "d": následujícím kódem:
// Ask the user to enter a non-zero divisor until they do so.
while (num2 == 0)
{
Console.WriteLine("Enter a non-zero divisor: ");
num2 = Convert.ToDouble(Console.ReadLine());
}
Console.WriteLine($"Your result: {num1} / {num2} = " + (num1 / num2));
break;
Po nahrazení kódu by část s příkazem switch měla vypadat podobně jako na následujícím snímku obrazovky:
Když teď vydělíte jakékoli číslo nulou, aplikace požádá o další číslo a bude se ptát, dokud nezadáte nenulové číslo.
Opravte formát chyby
Pokud zadáte abecední znak, když aplikace očekává číselný znak, aplikace se zablokuje. Visual Studio vám ukáže, co je v editoru kódu špatně.
Pokud chcete této výjimce zabránit, můžete refaktorovat kód, který jste zadali dříve.
Upravit kód
Místo toho, abyste se spoléhali na třídu program ke zpracování veškerého kódu, můžete aplikaci rozdělit do dvou tříd: Calculator a Program.
Třída Calculator zpracovává hromadnou práci výpočtu a třída Program zpracovává uživatelské rozhraní a práci zpracování chyb.
Pojďme začít.
V Program.csodstraňte vše a přidejte následující novou třídu
Calculator:class Calculator { public static double DoOperation(double num1, double num2, string op) { double result = double.NaN; // Default value is "not-a-number" if an operation, such as division, could result in an error. // Use a switch statement to do the math. switch (op) { case "a": result = num1 + num2; break; case "s": result = num1 - num2; break; case "m": result = num1 * num2; break; case "d": // Ask the user to enter a non-zero divisor. if (num2 != 0) { result = num1 / num2; } break; // Return text for an incorrect option entry. default: break; } return result; } }Přidejte také novou třídu
Programnásledujícím způsobem:class Program { static void Main(string[] args) { bool endApp = false; // Display title as the C# console calculator app. Console.WriteLine("Console Calculator in C#\r"); Console.WriteLine("------------------------\n"); while (!endApp) { // Declare variables and set to empty. string numInput1 = ""; string numInput2 = ""; double result = 0; // Ask the user to type the first number. Console.Write("Type a number, and then press Enter: "); numInput1 = Console.ReadLine(); double cleanNum1 = 0; while (!double.TryParse(numInput1, out cleanNum1)) { Console.Write("This is not valid input. Please enter a numeric value: "); numInput1 = Console.ReadLine(); } // Ask the user to type the second number. Console.Write("Type another number, and then press Enter: "); numInput2 = Console.ReadLine(); double cleanNum2 = 0; while (!double.TryParse(numInput2, out cleanNum2)) { Console.Write("This is not valid input. Please enter a numeric value: "); numInput2 = Console.ReadLine(); } // Ask the user to choose an operator. Console.WriteLine("Choose an operator from the following list:"); Console.WriteLine("\ta - Add"); Console.WriteLine("\ts - Subtract"); Console.WriteLine("\tm - Multiply"); Console.WriteLine("\td - Divide"); Console.Write("Your option? "); string op = Console.ReadLine(); try { result = Calculator.DoOperation(cleanNum1, cleanNum2, op); if (double.IsNaN(result)) { Console.WriteLine("This operation will result in a mathematical error.\n"); } else Console.WriteLine("Your result: {0:0.##}\n", result); } catch (Exception e) { Console.WriteLine("Oh no! An exception occurred trying to do the math.\n - Details: " + e.Message); } Console.WriteLine("------------------------\n"); // Wait for the user to respond before closing. Console.Write("Press 'n' and Enter to close the app, or press any other key and Enter to continue: "); if (Console.ReadLine() == "n") endApp = true; Console.WriteLine("\n"); // Friendly linespacing. } return; } }Vyberte tlačítko kalkulačky nebo stisknutím klávesy F5 spusťte aplikaci.
Postupujte podle výzev a vydělte číslo 42 číslem 119. Výsledky by měly vypadat podobně jako na následujícím snímku obrazovky:
Teď můžete spouštět další výpočty, dokud se nerozhodnete zavřít konzolovou aplikaci. Ve výsledcích je také méně desetinných míst. A pokud zadáte nesprávný znak, zobrazí se příslušná chybová odpověď.
Upravit kód
Místo toho, abyste se spoléhali na třídu program ke zpracování veškerého kódu, můžete aplikaci rozdělit do dvou tříd: Calculator a Program.
Třída Calculator zpracovává hromadnou práci výpočtu a třída Program zpracovává uživatelské rozhraní a práci zpracování chyb.
Pojďme začít.
V Program.csodstraňte vše a přidejte následující novou třídu
Calculator:class Calculator { public static double DoOperation(double num1, double num2, string op) { double result = double.NaN; // Default value is "not-a-number" if an operation, such as division, could result in an error. // Use a switch statement to do the math. switch (op) { case "a": result = num1 + num2; break; case "s": result = num1 - num2; break; case "m": result = num1 * num2; break; case "d": // Ask the user to enter a non-zero divisor. if (num2 != 0) { result = num1 / num2; } break; // Return text for an incorrect option entry. default: break; } return result; } }Přidejte také novou třídu
Programnásledujícím způsobem:class Program { static void Main(string[] args) { bool endApp = false; // Display title as the C# console calculator app. Console.WriteLine("Console Calculator in C#\r"); Console.WriteLine("------------------------\n"); while (!endApp) { // Declare variables and set to empty. // Use Nullable types (with ?) to match type of System.Console.ReadLine string? numInput1 = ""; string? numInput2 = ""; double result = 0; // Ask the user to type the first number. Console.Write("Type a number, and then press Enter: "); numInput1 = Console.ReadLine(); double cleanNum1 = 0; while (!double.TryParse(numInput1, out cleanNum1)) { Console.Write("This is not valid input. Please enter a numeric value: "); numInput1 = Console.ReadLine(); } // Ask the user to type the second number. Console.Write("Type another number, and then press Enter: "); numInput2 = Console.ReadLine(); double cleanNum2 = 0; while (!double.TryParse(numInput2, out cleanNum2)) { Console.Write("This is not valid input. Please enter a numeric value: "); numInput2 = Console.ReadLine(); } // Ask the user to choose an operator. Console.WriteLine("Choose an operator from the following list:"); Console.WriteLine("\ta - Add"); Console.WriteLine("\ts - Subtract"); Console.WriteLine("\tm - Multiply"); Console.WriteLine("\td - Divide"); Console.Write("Your option? "); string? op = Console.ReadLine(); // Validate input is not null, and matches the pattern if (op == null || ! Regex.IsMatch(op, "[a|s|m|d]")) { Console.WriteLine("Error: Unrecognized input."); } else { try { result = Calculator.DoOperation(cleanNum1, cleanNum2, op); if (double.IsNaN(result)) { Console.WriteLine("This operation will result in a mathematical error.\n"); } else Console.WriteLine("Your result: {0:0.##}\n", result); } catch (Exception e) { Console.WriteLine("Oh no! An exception occurred trying to do the math.\n - Details: " + e.Message); } } Console.WriteLine("------------------------\n"); // Wait for the user to respond before closing. Console.Write("Press 'n' and Enter to close the app, or press any other key and Enter to continue: "); if (Console.ReadLine() == "n") endApp = true; Console.WriteLine("\n"); // Friendly linespacing. } return; } }Poznámka
Nejlepší je použít nulovatelné typy (se symbolem
?) pro vstupní řetězce, protožeSystem.Console.ReadLinevrací nulovatelný referenční typ.Vyberte tlačítko kalkulačky nebo stisknutím klávesy F5 spusťte aplikaci.
Postupujte podle výzev a vydělte číslo 42 číslem 119. Výsledky by měly vypadat podobně jako na následujícím snímku obrazovky:
Teď můžete spouštět další výpočty, dokud se nerozhodnete zavřít konzolovou aplikaci. Ve výsledcích je také méně desetinných míst. A pokud zadáte nesprávný znak, zobrazí se příslušná chybová odpověď.
Zavření aplikace
Pokud jste to ještě neudělali, zavřete aplikaci Kalkulačka.
Zavřete podokno Výstup v sadě Visual Studio.
V sadě Visual Studio uložte aplikaci stisknutím kláves Ctrl+S.
Přidejte správu verzí Gitu
Teď, když máte aplikaci, můžete ji přidat do úložiště Git. Visual Studio usnadňuje tento proces pomocí nástrojů Gitu, které můžete použít přímo z integrovaného vývojového prostředí (IDE).
Spropitné
Git je nejpoužívanější moderní systém správy verzí. Ať už jste profesionální vývojář nebo se učíte kódovat, může být Git velmi užitečný. Pokud s Gitem začínáte, je web https://git-scm.com/ dobrým místem, kde začít. Můžete najít taháky, oblíbenou online knihu a videa o základech Gitu.
Pokud chcete kód přidružit k Gitu, začněte vytvořením nového úložiště Git, ve kterém se váš kód nachází:
Na stavovém řádku v pravém dolním rohu sady Visual Studio vyberte Přidat do Source Controla poté vyberte Git.
V dialogovém okně Vytvoření úložiště Git se přihlaste k GitHubu:
Název úložiště se automaticky naplní na základě umístění vaší složky. Vaše nové úložiště je ve výchozím nastavení soukromé, což znamená, že jste jediný, kdo k němu má přístup.
Spropitné
Bez ohledu na to, jestli je vaše úložiště veřejné nebo soukromé, je nejlepší mít bezpečně uložené vzdálené zálohování kódu na GitHubu. I když nepracujete s týmem, vzdálené úložiště vám zpřístupní váš kód z libovolného počítače.
Vyberte možnost Vytvořit a odeslat. Po vytvoření úložiště se na stavovém řádku zobrazí podrobnosti o stavu:
Použijte akce Git ve Visual Studio
Tady je stručný přehled akcí Gitu dostupných na stavovém řádku sady Visual Studio:
Šipky nahoru/dolů ukazují, kolik odchozích a příchozích commitů je ve vaší aktuální větvi. Pomocí této ikony můžete vyžádat příchozí potvrzení nebo odeslat odchozí potvrzení.
Pokud chcete zobrazit konkrétní commit, vyberte šipku nahoru/dolů a pak vyberte Zobrazit odchozí/příchozí.
Pencil zobrazuje počet nepotvrzených změn kódu. Tuto ikonu můžete vybrat, pokud chcete tyto změny zobrazit v okně Změny Gitu.
Nabídka Git poskytuje nástroje pro práci se soubory v úložišti. Pro správu verzí v sadě Visual Studio můžetepoužít git fetch, pull, push a sync.
Další informace o tom, jak používat Git s aplikací, najdete v tématu O Gitu v sadě Visual Studio.
Revize: Kód je dokončený.
V tomto kurzu jste provedli mnoho změn v aplikaci Kalkulačka. Aplikace teď zpracovává výpočetní prostředky efektivněji a zpracovává většinu chyb uživatelského vstupu.
Tady je kompletní kód, a to vše na jednom místě:
class Calculator
{
public static double DoOperation(double num1, double num2, string op)
{
double result = double.NaN; // Default value is "not-a-number" which we use if an operation, such as division, could result in an error.
// Use a switch statement to do the math.
switch (op)
{
case "a":
result = num1 + num2;
break;
case "s":
result = num1 - num2;
break;
case "m":
result = num1 * num2;
break;
case "d":
// Ask the user to enter a non-zero divisor.
if (num2 != 0)
{
result = num1 / num2;
}
break;
// Return text for an incorrect option entry.
default:
break;
}
return result;
}
}
class Program
{
static void Main(string[] args)
{
bool endApp = false;
// Display title as the C# console calculator app.
Console.WriteLine("Console Calculator in C#\r");
Console.WriteLine("------------------------\n");
while (!endApp)
{
// Declare variables and set to empty.
string numInput1 = "";
string numInput2 = "";
double result = 0;
// Ask the user to type the first number.
Console.Write("Type a number, and then press Enter: ");
numInput1 = Console.ReadLine();
double cleanNum1 = 0;
while (!double.TryParse(numInput1, out cleanNum1))
{
Console.Write("This is not valid input. Please enter a numeric value: ");
numInput1 = Console.ReadLine();
}
// Ask the user to type the second number.
Console.Write("Type another number, and then press Enter: ");
numInput2 = Console.ReadLine();
double cleanNum2 = 0;
while (!double.TryParse(numInput2, out cleanNum2))
{
Console.Write("This is not valid input. Please enter a numeric value: ");
numInput2 = Console.ReadLine();
}
// Ask the user to choose an operator.
Console.WriteLine("Choose an operator from the following list:");
Console.WriteLine("\ta - Add");
Console.WriteLine("\ts - Subtract");
Console.WriteLine("\tm - Multiply");
Console.WriteLine("\td - Divide");
Console.Write("Your option? ");
string op = Console.ReadLine();
try
{
result = Calculator.DoOperation(cleanNum1, cleanNum2, op);
if (double.IsNaN(result))
{
Console.WriteLine("This operation will result in a mathematical error.\n");
}
else Console.WriteLine("Your result: {0:0.##}\n", result);
}
catch (Exception e)
{
Console.WriteLine("Oh no! An exception occurred trying to do the math.\n - Details: " + e.Message);
}
Console.WriteLine("------------------------\n");
// Wait for the user to respond before closing.
Console.Write("Press 'n' and Enter to close the app, or press any other key and Enter to continue: ");
if (Console.ReadLine() == "n") endApp = true;
Console.WriteLine("\n"); // Friendly linespacing.
}
return;
}
}
class Calculator
{
public static double DoOperation(double num1, double num2, string op)
{
double result = double.NaN; // Default value is "not-a-number" which we use if an operation, such as division, could result in an error.
// Use a switch statement to do the math.
switch (op)
{
case "a":
result = num1 + num2;
break;
case "s":
result = num1 - num2;
break;
case "m":
result = num1 * num2;
break;
case "d":
// Ask the user to enter a non-zero divisor.
if (num2 != 0)
{
result = num1 / num2;
}
break;
// Return text for an incorrect option entry.
default:
break;
}
return result;
}
}
class Program
{
static void Main(string[] args)
{
bool endApp = false;
// Display title as the C# console calculator app.
Console.WriteLine("Console Calculator in C#\r");
Console.WriteLine("------------------------\n");
while (!endApp)
{
// Declare variables and set to empty.
// Use Nullable types (with ?) to match type of System.Console.ReadLine
string? numInput1 = "";
string? numInput2 = "";
double result = 0;
// Ask the user to type the first number.
Console.Write("Type a number, and then press Enter: ");
numInput1 = Console.ReadLine();
double cleanNum1 = 0;
while (!double.TryParse(numInput1, out cleanNum1))
{
Console.Write("This is not valid input. Please enter a numeric value: ");
numInput1 = Console.ReadLine();
}
// Ask the user to type the second number.
Console.Write("Type another number, and then press Enter: ");
numInput2 = Console.ReadLine();
double cleanNum2 = 0;
while (!double.TryParse(numInput2, out cleanNum2))
{
Console.Write("This is not valid input. Please enter a numeric value: ");
numInput2 = Console.ReadLine();
}
// Ask the user to choose an operator.
Console.WriteLine("Choose an operator from the following list:");
Console.WriteLine("\ta - Add");
Console.WriteLine("\ts - Subtract");
Console.WriteLine("\tm - Multiply");
Console.WriteLine("\td - Divide");
Console.Write("Your option? ");
string? op = Console.ReadLine();
// Validate input is not null, and matches the pattern
if (op == null || ! Regex.IsMatch(op, "[a|s|m|d]"))
{
Console.WriteLine("Error: Unrecognized input.");
}
else
{
try
{
result = Calculator.DoOperation(cleanNum1, cleanNum2, op);
if (double.IsNaN(result))
{
Console.WriteLine("This operation will result in a mathematical error.\n");
}
else Console.WriteLine("Your result: {0:0.##}\n", result);
}
catch (Exception e)
{
Console.WriteLine("Oh no! An exception occurred trying to do the math.\n - Details: " + e.Message);
}
}
Console.WriteLine("------------------------\n");
// Wait for the user to respond before closing.
Console.Write("Press 'n' and Enter to close the app, or press any other key and Enter to continue: ");
if (Console.ReadLine() == "n") endApp = true;
Console.WriteLine("\n"); // Friendly linespacing.
}
return;
}
}
Další krok
Pokračujte druhou částí tohoto kurzu: