Självstudie: Skapa en enkel C#-konsolapp i Visual Studio (del 1 av 2)
I den här självstudien använder du Visual Studio för att skapa och köra en C#-konsolapp och utforska vissa funktioner i Den integrerade utvecklingsmiljön i Visual Studio (IDE). Den här självstudien är del 1 i en självstudieserie i två delar.
I den här självstudien utför du följande uppgifter:
- Skapa ett Visual Studio-projekt.
- Skapa en C#-konsolapp.
- Felsök din app.
- Stäng appen.
- Kontrollera din fullständiga kod.
I del 2 i den här självstudienutökar du den här appen för att lägga till fler projekt, lära dig felsökningstrick och referera till paket som inte kommer från Microsoft.
Förutsättningar
Visual Studio måste vara installerat.
Om du inte har Visual Studio går du till Visual Studio-nedladdningar för att installera det kostnadsfritt.
Skapa ett projekt
Börja genom att skapa ett C#-programprojekt. Projekttypen levereras med alla mallfiler som du behöver.
Öppna Visual Studio och välj Skapa ett nytt projekt i startfönstret.
I fönstret Skapa ett nytt projekt väljer du C# i listrutan språk. Välj Windows- från plattformslistan och Console från listan med projekttyper.
När du har tillämpat filter för språk, plattform och projekttyp väljer du mallen Konsolprogram och väljer sedan Nästa.
Not
Om du inte ser mallen Konsolprogram väljer du Installera fler verktyg och funktioner.
I Visual Studio Installer väljer du .NET Core utveckling för plattformsoberoende arbetsuppgift.
Välj Ändra i Installationsprogrammet för Visual Studio. Du kan uppmanas att spara ditt arbete. Välj Fortsätt för att installera arbetsuppgiften.
Gå tillbaka till steg 2 i proceduren Skapa ett projekt.
I fönstret Konfigurera det nya projektet skriver eller anger du Kalkylator i rutan Projektnamn. Välj sedan Nästa.
I fönstret Ytterligare information kontrollerar du att .NET Core 3.1 visas i fältet Target Framework. Välj sedan Skapa.
Visual Studio öppnar ditt nya projekt, som innehåller standardkoden Hello World. Om du vill visa den i redigeraren väljer du kodfilen Program.cs i Solution Explorer-fönstret, som vanligtvis finns till höger i Visual Studio.
Standardkoden Hello World anropar WriteLine-metoden för att visa strängen literal Hello, World! i konsolfönstret. Om du trycker på F5 kan du köra standardprogrammet i felsökningsläge. När programmet har körts i felsökningsprogrammet förblir konsolfönstret öppet. Tryck på valfri tangent för att stänga konsolfönstret.
Öppna Visual Studio och välj Skapa ett nytt projekt i startfönstret.
I fönstret Skapa ett nytt projekt väljer du C# i listrutan språk. Välj Windows- från plattformslistan och Console från listan med projekttyper.
När du har tillämpat filter för språk, plattform och projekttyp väljer du mallen Console App och väljer sedan Nästa.
Not
Om du inte ser mallen Console App väljer du Installera fler verktyg och funktioner.
I Visual Studio Installer väljer du arbetsbelastningen .NET-skrivbordsutveckling.
Välj Ändra i Installationsprogrammet för Visual Studio. Du kan uppmanas att spara ditt arbete. Välj Fortsätt för att installera arbetsuppgiften.
Gå tillbaka till steg 2 i detta Skapa ett projekt-proceduren.
I fönstret Konfigurera ditt nya projekt skriver eller anger du Kalkylator i rutan Projektnamn och väljer sedan Nästa.
I fönstret Ytterligare information väljer du .NET 8.0 för fältet Target Framework. Välj sedan Skapa.
Visual Studio öppnar ditt nya projekt, som innehåller standardkoden Hello World. Om du vill visa den i redigeraren väljer du kodfilen Program.cs i Solution Explorer-fönstret, som vanligtvis finns till höger i Visual Studio.
Den enkla kodsatsen, anropar metoden WriteLine för att visa den bokstavliga strängen "Hello, World!" i konsolfönstret. Om du trycker på F5 kan du köra standardprogrammet i felsökningsläge. När programmet har körts i felsökningsprogrammet förblir konsolfönstret öppet. Tryck på valfri tangent för att stänga konsolfönstret.
Not
Från och med .NET 6 genererar nya projekt med hjälp av konsolmallen annan kod än tidigare versioner. För mer information, se Nya C#-mallar genererar högnivåuttryck.
Skapa appen
I det här avsnittet utför du följande uppgifter:
- Utforska grundläggande heltalsmatematik i C#.
- Lägg till kod för att skapa en grundläggande kalkylatorapp.
- Felsöka appen för att hitta och åtgärda fel.
- Förfina koden för att göra den mer effektiv.
Utforska heltalsmatematik
Börja med grundläggande heltalsmatematik i C#.
I den högra rutan väljer du Program.cs för att visa filen i kodredigeraren.
Ta bort standardkoden Hello World i kodredigeraren.
Mer specifikt tar du bort raden som säger
Console.WriteLine("Hello World!");
.I stället anger du följande kod:
int a = 42; int b = 119; int c = a + b; Console.WriteLine(c); Console.ReadKey();
Observera att när du anger koden ger intelliSense-funktionen i Visual Studio dig möjlighet att komplettera posten automatiskt.
Välj den gröna knappen Starta bredvid Calculator för att skapa och köra programmet, eller tryck på F5.
Ett konsolfönster öppnas som visar summan av 42 + 119, vilket är 161.
(valfritt) Du kan ändra operatorn för att ändra resultatet. Du kan till exempel ändra operatorn
+
iint c = a + b;
kodrad till-
för subtraktion,*
för multiplikation eller/
för division. När du sedan kör programmet ändras även resultatet.Stäng konsolfönstret.
I Solution Explorerväljer du Program.cs i den högra rutan för att visa filen i kodredigeraren.
I kodredigeraren ersätter du standardkoden Hello World som säger
Console.WriteLine("Hello World!");
.Ersätt raden med följande kod:
int a = 42; int b = 119; int c = a + b; Console.WriteLine(c); Console.ReadKey();
Om du anger koden erbjuder Visual Studios IntelliSense-funktion dig möjligheten att automatiskt komplettera inmatningen.
Om du vill skapa och köra appen trycker du på F5, eller väljer den gröna pilen bredvid namnet Calculator i det övre verktygsfältet.
Ett konsolfönster öppnas som visar summan av 42 + 119, vilket är 161.
Stäng konsolfönstret.
(valfritt) Du kan ändra operatorn för att ändra resultatet. Du kan till exempel ändra operatorn
+
iint c = a + b;
kodrad till-
för subtraktion,*
för multiplikation eller/
för division. När du kör appen ändras resultatet i enlighet med detta.
Lägga till kod för att skapa en kalkylator
Fortsätt genom att lägga till en mer komplex uppsättning kalkylatorkod i projektet.
I kodredigeraren ersätter du all kod i Program.cs med följande nya kod:
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(); } } }
Välj knappen Kalkylator eller tryck på F5 för att köra appen.
Ett konsolfönster öppnas.
I konsolfönstret följer du anvisningarna för att lägga till siffrorna 42 och 119 tillsammans.
Appen bör se ut ungefär så här:
I kodredigeraren ersätter du all kod i Program.cs med följande nya kod:
// 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();
Välj knappen Kalkylator eller tryck på F5 för att köra appen.
Ett konsolfönster öppnas.
I konsolfönstret följer du anvisningarna för att lägga till siffrorna 42 och 119 tillsammans.
Appen bör se ut ungefär så här:
Lägg till decimalfunktioner
Nu kan du justera koden för att lägga till fler funktioner.
Den aktuella kalkylatorappen accepterar och returnerar bara heltal. Om du till exempel kör appen och delar numret 42 med talet 119 är resultatet noll, vilket inte är exakt.
Så här åtgärdar du koden för att förbättra precisionen genom att hantera decimaler:
Från Program.cs i Visual Studio-redigeraren trycker du på Ctrl+H för att öppna kontrollen Sök och ersätt.
Skriv int i kontrollfältet och skriv float i Ersätt-fältet .
Välj ikonerna för Matcha skiftläge och Matcha hela ord i kontrollpanelen, eller tryck på Alt+C och Alt+W.
Välj ikonen Ersätt alla eller tryck på Alt+A för att köra sökningen och ersätta.
Kör kalkylatorappen igen och dividera talet 42 med talet 119.
Appen returnerar nu ett decimaltal i stället för noll.
Nu kan appen generera decimalresultat. Gör några fler justeringar i koden så att appen också kan beräkna decimaler.
Använd kontrollen Sök och Ersätt för att ändra varje instans av variabeln
float
tilldouble
och för att ändra varje instans av metodenConvert.ToInt32
tillConvert.ToDouble
.Kör kalkylatorappen och dividera talet 42,5 med talet 119,75.
Appen accepterar nu decimalvärden och returnerar ett längre decimaltal som resultat.
I avsnittet Revidera koden minskar du antalet decimaler i resultatet.
Felsöka appen
Du har förbättrat din grundläggande kalkylatorapp, men appen hanterar ännu inte undantag, till exempel användarinmatningsfel. Om användarna till exempel försöker dividera med noll eller anger ett oväntat tecken kan appen sluta fungera, returnera ett fel eller returnera ett oväntat icke-numeriskt resultat.
Låt oss gå igenom några vanliga användarindatafel, leta upp dem i felsökningsprogrammet om de dyker upp där och åtgärda dem i koden.
Tips
Mer information om felsökningsprogrammet och hur det fungerar finns i Första titten på Visual Studio-felsökningsprogrammet.
Åtgärda dividera med noll fel
Om du försöker dela upp ett tal med noll kan konsolappen frysa och sedan visa vad som är fel i kodredigeraren.
Not
Ibland fryser inte appen och felsökaren visar inte ett divide-by-zero-fel. I stället kan appen returnera ett oväntat icke-numeriskt resultat, till exempel en oändlighetssymbol. Följande kodkorrigering gäller fortfarande.
Nu ska vi ändra koden för att hantera det här felet. I Program.csersätter du koden för case "d":
med följande kod:
// 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;
När du har ersatt koden bör avsnittet med switch
-instruktionen se ut ungefär så här:
Nu när du delar upp ett tal med noll frågar appen efter ett annat tal och frågar tills du anger ett icke-nolltal.
Åtgärda felet format
Om du anger ett alfabetiskt tecken när appen förväntar sig ett numeriskt tecken låses appen. Visual Studio visar vad som är fel i kodredigeraren.
För att förhindra det här undantaget kan du omstrukturera koden som du angav tidigare.
Ändra koden
I stället för att förlita dig på klassen program
för att hantera all kod kan du dela upp appen i två klasser: Calculator
och Program
.
Klassen Calculator
hanterar huvuddelen av beräkningsarbetet och klassen Program
hanterar användargränssnittet och felhanteringsarbetet.
Nu ska vi komma igång.
I Program.cstar du bort allt och lägger till följande nya
Calculator
-klass: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; } }
Lägg också till en ny
Program
-klass enligt följande: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; } }
Välj knappen Kalkylator eller tryck på F5 för att köra appen.
Följ anvisningarna och dividera talet 42 med talet 119. Resultatet bör se ut ungefär så här:
Nu kan du köra fler beräkningar tills du väljer att stänga konsolappen. Det finns också färre decimaler i resultatet. Och om du anger ett felaktigt tecken får du ett lämpligt felsvar.
Ändra koden
I stället för att förlita dig på klassen program
för att hantera all kod kan du dela upp appen i två klasser: Calculator
och Program
.
Klassen Calculator
hanterar huvuddelen av beräkningsarbetet och klassen Program
hanterar användargränssnittet och felhanteringsarbetet.
Nu ska vi komma igång.
I Program.cstar du bort allt och lägger till följande nya
Calculator
-klass: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; } }
Lägg också till en ny
Program
-klass enligt följande: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; } }
Not
Det är bäst att använda null-typer (med symbolen
?
) för indatasträngarna, eftersomSystem.Console.ReadLine
returnerar en null-referenstyp.Välj knappen Kalkylator eller tryck på F5 för att köra appen.
Följ anvisningarna och dividera talet 42 med talet 119. Resultatet bör se ut ungefär så här:
Nu kan du köra fler beräkningar tills du väljer att stänga konsolappen. Det finns också färre decimaler i resultatet. Och om du anger ett felaktigt tecken får du ett lämpligt felsvar.
Stäng appen
Om du inte redan har gjort det stänger du appen Kalkylator.
Stäng utdatafönstret i Visual Studio.
I Visual Studio trycker du på Ctrl+S för att spara appen.
Lägg till Git-källkontroll
Nu när du har ett program kanske du vill lägga till det i en Git-lagringsplats. Visual Studio gör processen enkel med Git-verktyg som du kan använda direkt från IDE.
Tips
Git är det mest använda moderna versionskontrollsystemet. Oavsett om du är en professionell utvecklare eller om du lär dig att koda kan Git vara mycket användbart. Om du är nybörjare på Git är https://git-scm.com/
webbplats ett bra ställe att börja på. Du hittar fuskark, en populär onlinebok och Git Basics-videor.
Om du vill associera din kod med Git börjar du med att skapa en ny Git-lagringsplats där koden finns:
I statusfältet längst ned till höger i Visual Studio väljer du Lägg till i källkontrolloch väljer sedan Git.
I dialogrutan Skapa en Git-lagringsplats loggar du in på GitHub:
Lagringsplatsens namn fylls i automatiskt baserat på din mappplats. Den nya lagringsplatsen är privat som standard, vilket innebär att du är den enda som kan komma åt den.
Tips
Oavsett om lagringsplatsen är offentlig eller privat är det bäst att ha en fjärrsäkerhetskopia av koden lagrad på ett säkert sätt på GitHub. Även om du inte arbetar med ett team gör en fjärrlagringsplats din kod tillgänglig för dig från valfri dator.
Välj Skapa och pusha. När du har skapat lagringsplatsen visas statusinformation i statusfältet:
Använda Git-åtgärder i Visual Studio
Här är en kort sammanfattning av Git-åtgärder som är tillgängliga i Statusfältet i Visual Studio:
Pilarna upp/ned visar hur många utgående/inkommande commits som finns i den aktuella grenen. Du kan använda den här ikonen för att hämta inkommande commits eller skicka utgående commits.
Om du vill visa en specifik incheckning väljer du pilen upp/ned och väljer sedan Visa utgående/inkommande.
Pencil- visar antalet oengagerade ändringar i din kod. Du kan välja den här ikonen om du vill visa ändringarna i fönstret Git-ändringar.
Menyn Git innehåller verktyg för lagringsplatsåtgärder på dina filer. Du kan använda git fetch, pull, push och sync för versionskontroll i Visual Studio.
Mer information om hur du använder Git med din app finns i Om Git i Visual Studio.
Granska: Koden har slutförts
I den här handledningen har du gjort många ändringar i kalkylator-appen. Appen hanterar nu datorkraft mer effektivt och hanterar de flesta fel vid användarinmatning.
Här är den fullständiga koden, allt på ett ställe:
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;
}
}
Nästa steg
Fortsätt med den andra delen av den här självstudien: