Zelfstudie: Een eenvoudige C#-console-app maken in Visual Studio (deel 1 van 2)
In deze zelfstudie gebruikt u Visual Studio om een C#-console-app te maken en uit te voeren en enkele functies van de Integrated Development Environment (IDE) van Visual Studio te verkennen. Deze zelfstudie is deel 1 van een tweedelige reeks zelfstudies.
In deze zelfstudie voert u de volgende taken uit:
- Maak een Visual Studio-project.
- Een C#-console-app maken.
- Fouten opsporen in uw app.
- Sluit uw app.
- Inspecteer uw volledige code.
In deel 2 van deze zelfstudiebreidt u deze app uit om meer projecten toe te voegen, meer informatie te krijgen over trucs voor foutopsporing en om te verwijzen naar niet-Microsoft-pakketten.
Voorwaarden
Visual Studio moet zijn geïnstalleerd.
Als u Visual Studio niet hebt, gaat u naar Visual Studio-downloads daar om deze gratis te installeren.
Een project maken
Maak een C#-toepassingsproject om te beginnen. Het projecttype wordt geleverd met alle sjabloonbestanden die u nodig hebt.
Open Visual Studio en selecteer Een nieuw project maken in het startvenster.
Selecteer in het venster Een nieuw project maken de optie C# uit de vervolgkeuzelijst voor taal. Kies Windows in de lijst met platformen en Console in de lijst met projecttypen.
Nadat u de filters voor taal, platform en projecttype hebt toegepast, kiest u de sjabloon Consoletoepassing en selecteert u vervolgens Volgende.
Notitie
Als u de sjabloon Consoletoepassing niet ziet, selecteert u Meer hulpprogramma's en functies installeren.
Selecteer in het Visual Studio-installatieprogramma de .NET Core platformoverschrijdende ontwikkeling workload.
Selecteer en wijzig in het Visual Studio Installatieprogramma. Mogelijk wordt u gevraagd uw werk op te slaan. Selecteer Doorgaan om de workload te installeren.
Ga terug naar stap 2 in de Een project procedure maken.
Typ of voer in het venster Uw nieuwe project configureren Calculator in het vak Projectnaam in. Selecteer vervolgens Volgende.
Controleer in het venster Aanvullende informatie of .NET Core 3.1 wordt weergegeven in het veld Doelframework. Selecteer vervolgens Creëren.
Visual Studio opent uw nieuwe project, dat standaard Hello World code bevat. Als u het bestand in de editor wilt weergeven, selecteert u het codebestand Program.cs in het Solution Explorer-venster. Dit bevindt zich meestal aan de rechterkant van Visual Studio.
De standaardcode Hello World roept de WriteLine methode aan om de letterlijke tekenreeks weer te geven Hallo wereld! in het consolevenster. Als u op F5 drukt, kunt u het standaardprogramma uitvoeren in de foutopsporingsmodus. Nadat de toepassing is uitgevoerd in het foutopsporingsprogramma, blijft het consolevenster geopend. Druk op een willekeurige toets om het consolevenster te sluiten.
Open Visual Studio en selecteer Een nieuw project maken in het startvenster.
In het venster Een nieuw project maken selecteert u C# uit de keuzelijst voor talen. Kies Windows in de lijst met platformen en Console in de lijst met projecttypen.
Nadat u de filters voor taal, platform en projecttype hebt toegepast, kiest u de sjabloon Console-app en selecteert u vervolgens Volgende.
Notitie
Als u de console-app sjabloon niet ziet, selecteert u Meer hulpprogramma's en functies installeren.
Selecteer in het Visual Studio-installatieprogramma de .NET-desktopontwikkeling workload.
Selecteer en wijzig in het Visual Studio Installatieprogramma. Mogelijk wordt u gevraagd uw werk op te slaan. Selecteer Doorgaan om de workload te installeren.
Ga terug naar stap 2 in dit Een project procedure maken.
In het venster Uw nieuwe project configureren typt u Calculator in het vak Projectnaam en selecteert u vervolgens Volgende.
Selecteer in het venster Aanvullende informatie.NET 8.0 voor het veld Target Framework. Selecteer vervolgens Creëren.
Visual Studio opent uw nieuwe project, dat standaard Hello World code bevat. Als u het bestand in de editor wilt weergeven, selecteert u het codebestand Program.cs in het Solution Explorer-venster. Dit bevindt zich meestal aan de rechterkant van Visual Studio.
De enkele coderegel roept de methode WriteLine aan om de letterlijke tekenreeks Hello, World! in het consolevenster weer te geven. Als u op F5 drukt, kunt u het standaardprogramma uitvoeren in de foutopsporingsmodus. Nadat de toepassing is uitgevoerd in het foutopsporingsprogramma, blijft het consolevenster geopend. Druk op een willekeurige toets om het consolevenster te sluiten.
Notitie
Vanaf .NET 6 genereren nieuwe projecten met behulp van de consolesjabloon andere code dan vorige versies. Voor meer informatie, zie Nieuwe C#-sjablonen genereren topprogrammatica-opdrachten.
De app maken
In deze sectie voert u de volgende taken uit:
- Verken enkele basisbewerkingen met gehele getallen in C#.
- Voeg code toe om een eenvoudige rekenmachine-app te maken.
- Debug de app om fouten te vinden en op te lossen.
- Verfijn de code om deze efficiënter te maken.
Berekening van gehele getallen verkennen
Begin met enkele eenvoudige wiskundige getallen in C#.
Selecteer in het rechterdeelvenster Program.cs om het bestand weer te geven in de code-editor.
Verwijder in de code-editor de standaardcode Hello World code.
Verwijder met name de regel met de tekst
Console.WriteLine("Hello World!");
.Voer de volgende code in:
int a = 42; int b = 119; int c = a + b; Console.WriteLine(c); Console.ReadKey();
U ziet dat wanneer u de code invoert, de Functie IntelliSense in Visual Studio u de optie biedt om de vermelding automatisch aan te vullen.
Selecteer de groene knop Start naast Calculator om uw programma te bouwen en uit te voeren, of druk op F5-.
Er wordt een consolevenster geopend waarin de som van 42 + 119 wordt weergegeven. Dit is 161.
(optioneel) U kunt de operator wijzigen om het resultaat te wijzigen. U kunt bijvoorbeeld de operator
+
in deint c = a + b;
coderegel wijzigen in-
voor aftrekken,*
voor vermenigvuldigen of/
voor delen. Wanneer u het programma uitvoert, verandert het resultaat ook.Sluit het consolevenster.
Selecteer in Solution Explorerin het rechterdeelvenster Program.cs om het bestand weer te geven in de code-editor.
Vervang in de code-editor de standaardcode Hello World code met de tekst
Console.WriteLine("Hello World!");
.Vervang de regel door de volgende code:
int a = 42; int b = 119; int c = a + b; Console.WriteLine(c); Console.ReadKey();
Als u de code invoert, biedt de Visual Studio IntelliSense-functie u de mogelijkheid om de vermelding automatisch aan te vullen.
Als u uw app wilt bouwen en uitvoeren, drukt u op F5of selecteert u de groene pijl naast de naam Calculator op de bovenste werkbalk.
Er wordt een consolevenster geopend met de som van 42 + 119, 161.
Sluit het consolevenster.
(optioneel) U kunt de operator wijzigen om het resultaat te wijzigen. U kunt bijvoorbeeld de operator
+
in deint c = a + b;
coderegel wijzigen in-
voor aftrekken,*
voor vermenigvuldigen of/
voor delen. Wanneer u de app uitvoert, wordt het resultaat dienovereenkomstig gewijzigd.
Code toevoegen om een rekenmachine te maken
Ga door met het toevoegen van een complexere set rekenmachinecode aan uw project.
Vervang in de code-editor alle code in Program.cs door de volgende nieuwe code:
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(); } } }
Selecteer de Calculator knop of druk op F5 om uw app uit te voeren.
Er wordt een consolevenster geopend.
Volg in het consolevenster de aanwijzingen om de nummers 42 en 119 samen toe te voegen.
Uw app moet er ongeveer uitzien als in de volgende schermopname:
Vervang in de code-editor alle code in Program.cs door de volgende nieuwe code:
// 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();
Selecteer de Calculator knop of druk op F5 om uw app uit te voeren.
Er wordt een consolevenster geopend.
Volg in het consolevenster de aanwijzingen om de nummers 42 en 119 samen toe te voegen.
Uw app moet er ongeveer uitzien als in de volgende schermopname:
Decimale functionaliteit toevoegen
Pas nu de code aan om meer functionaliteit toe te voegen.
De huidige rekenmachine-app accepteert en retourneert alleen gehele getallen. Als u bijvoorbeeld de app uitvoert en het getal 42 deelt door het getal 119, is uw resultaat nul, wat niet exact is.
De code herstellen om de precisie te verbeteren door decimalen te verwerken:
Druk vanuit Program.cs in de Visual Studio-editor op Ctrl+H om de Zoeken en vervangen functie te openen.
Typ in de bedieningsinterface en typ float in het vervangingsveld .
Selecteer de pictogrammen voor Hoofdlettergevoelig en Hele woord bij de bediening of druk op Alt+C en Alt+W.
Selecteer het pictogram Alles vervangen of druk op Alt+A om zoeken en vervangen uit te voeren.
Voer de rekenmachine-app opnieuw uit en deel het getal 42 door het getal 119.
De app retourneert nu een decimaal getal in plaats van nul.
De app kan nu decimale resultaten produceren. Breng nog enkele aanpassingen aan de code aan, zodat de app ook decimalen kan berekenen.
Gebruik de Zoeken en Vervangen controle om elk exemplaar van de
float
variabele te vervangen doordouble
en elk exemplaar van deConvert.ToInt32
methode te vervangen doorConvert.ToDouble
.Voer de rekenmachine-app uit en deel het getal 42,5 door het getal 119,75.
De app accepteert nu decimale waarden en retourneert een langer decimaal getal als resultaat.
In de Wijzig de code sectie, vermindert u het aantal decimalen in de resultaten.
Fouten opsporen in de app
U hebt uw eenvoudige rekenmachine-app verbeterd, maar uw app verwerkt nog geen uitzonderingen, zoals invoerfouten van gebruikers. Als gebruikers bijvoorbeeld proberen te delen door nul of een onverwacht teken invoeren, werkt de app mogelijk niet meer, retourneert de app een fout of retourneert een onverwacht niet-numeriek resultaat.
Laten we een paar veelvoorkomende gebruikersinvoerfouten bekijken, deze vinden in het foutopsporingsprogramma als ze daar worden weergegeven en deze in de code herstellen.
De fout delen door nul oplossen
Als u een getal probeert te delen door nul, kan de console-app vastlopen, en ziet u vervolgens wat er mis is in de code-editor.
Notitie
Soms blokkeert de app niet, en toont de debugger geen foutmelding over delen door nul. In plaats daarvan kan de app een onverwacht niet-numeriek resultaat retourneren, zoals een oneindig symbool. De volgende codeoplossing is nog steeds van toepassing.
We gaan de code wijzigen om deze fout af te handelen. Vervang in Program.csde code voor case "d":
door de volgende code:
// 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;
Nadat u de code hebt vervangen, moet de sectie met de switch
-instructie er ongeveer als volgt uitzien:
Wanneer u een getal deelt door nul, vraagt de app om een ander getal en blijft u vragen totdat u een niet-nulnummer opgeeft.
De -indeling-fout oplossen
Als u een alfabetisch teken invoert wanneer de app een numeriek teken verwacht, wordt de app geblokkeerd. Visual Studio laat zien wat er mis is in de code-editor.
Als u deze uitzondering wilt voorkomen, kunt u de code die u eerder hebt ingevoerd, herstructureren.
De code herzien
In plaats van te vertrouwen op de program
-klasse om alle code te verwerken, kunt u uw app in twee klassen verdelen: Calculator
en Program
.
De Calculator
klasse verwerkt het grootste deel van het berekeningswerk en de Program
klasse verwerkt de gebruikersinterface en foutafhandeling.
Laten we beginnen.
Verwijder in Program.csalles en voeg de volgende nieuwe
Calculator
-klasse toe: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; } }
Voeg als volgt een nieuwe
Program
-klasse toe: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; } }
Selecteer de Calculator knop of druk op F5 om uw app uit te voeren.
Volg de aanwijzingen en deel het getal 42 door het getal 119. Uw resultaten moeten er ongeveer uitzien als in de volgende schermopname:
U kunt nu meer berekeningen uitvoeren totdat u ervoor kiest om de console-app te sluiten. De resultaten bevatten ook minder decimalen. En als u een onjuist teken invoert, krijgt u een geschikt foutbericht.
De code herzien
In plaats van te vertrouwen op de program
-klasse om alle code te verwerken, kunt u uw app in twee klassen verdelen: Calculator
en Program
.
De Calculator
klasse verwerkt het grootste deel van het berekeningswerk en de Program
klasse verwerkt de gebruikersinterface en foutafhandeling.
Laten we beginnen.
Verwijder in Program.csalles en voeg de volgende nieuwe
Calculator
-klasse toe: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; } }
Voeg als volgt een nieuwe
Program
-klasse toe: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; } }
Notitie
U kunt het beste nullable types gebruiken (met het symbool
?
) voor de invoertekenreeksen, omdatSystem.Console.ReadLine
een nullable verwijzingstyperetourneert.Selecteer de Calculator knop of druk op F5 om uw app uit te voeren.
Volg de aanwijzingen en deel het getal 42 door het getal 119. Uw resultaten moeten er ongeveer uitzien als in de volgende schermopname:
U kunt nu meer berekeningen uitvoeren totdat u ervoor kiest om de console-app te sluiten. De resultaten bevatten ook minder decimalen. En als u een onjuist teken invoert, krijgt u een geschikt foutbericht.
De app sluiten
Als u dit nog niet hebt gedaan, sluit u de calculator-app.
Sluit het deelvenster Uitvoer in Visual Studio.
Druk in Visual Studio op Ctrl+S om uw app op te slaan.
Git-broncodebeheer toevoegen
Nu u een toepassing hebt, kunt u deze toevoegen aan een Git-opslagplaats. Visual Studio maakt dit proces eenvoudig met Git-hulpprogramma's die u rechtstreeks vanuit de IDE kunt gebruiken.
Fooi
Git is het meest gebruikte moderne versiebeheersysteem. Of u nu een professionele ontwikkelaar bent of leert hoe u codet, Git kan erg nuttig zijn. Als u niet eerder met Git werkt, is de https://git-scm.com/
website een goede plek om te beginnen. U vindt cheatsheets, een populair onlineboek en Git Basics-video's.
Als u uw code wilt koppelen aan Git, begint u met het maken van een nieuwe Git-opslagplaats waar uw code zich bevindt:
Selecteer in de statusbalk rechtsonder in Visual Studio Toevoegen aan broncodebeheeren selecteer vervolgens Git-.
Meld u aan bij GitHub in het dialoogvenster Een Git-opslagplaats maken.
De naam van de opslagplaats wordt automatisch ingevuld op basis van de maplocatie. Uw nieuwe opslagplaats is standaard privé, wat betekent dat u de enige bent die er toegang toe heeft.
Fooi
Of uw opslagplaats nu openbaar of privé is, u kunt het beste een externe back-up van uw code veilig opslaan op GitHub. Zelfs als u niet met een team werkt, maakt een externe opslagplaats uw code beschikbaar vanaf elke computer.
Selecteer maken en pushen. Nadat u de opslagplaats hebt gemaakt, ziet u statusdetails op de statusbalk:
Git-acties gebruiken in Visual Studio
Hier volgt een kort overzicht van Git-acties die beschikbaar zijn op de statusbalk van Visual Studio:
De pijlen omhoog/omlaag geven aan hoeveel uitgaande/binnenkomende commits zich in uw huidige tak bevinden. U kunt dit pictogram gebruiken om binnenkomende commits op te halen of uitgaande commits te verzenden.
Als u een specifieke doorvoering wilt weergeven, selecteert u de pijl-omhoog/omlaag en selecteert u vervolgens Uitgaande/binnenkomendeweergeven.
In de Pencil: ziet u hoeveel wijzigingen er nog niet uitgevoerd zijn in uw code. U kunt dit pictogram selecteren om deze wijzigingen weer te geven in het venster Git-wijzigingen.
Het menu Git bevat hulpprogramma's voor opslagplaatsacties in uw bestanden. U kunt git fetch, pull, push en synchronisatie gebruiken voor versiebeheer in Visual Studio.
Zie Over Git in Visual Studiovoor meer informatie over het gebruik van Git met uw app.
Controleren: Code voltooid
In deze zelfstudie hebt u veel wijzigingen aangebracht in de calculator-app. De app verwerkt nu efficiënter rekenresources en verwerkt de meeste invoerfouten van gebruikers.
Hier volgt de volledige code, allemaal op één plek:
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;
}
}
Volgende stap
Ga verder met het tweede deel van deze zelfstudie: