Esercitazione: Creare una semplice app console C# in Visual Studio (parte 1 di 2)
In questa esercitazione si usa Visual Studio per creare ed eseguire un'app console C# ed esplorare alcune funzionalità dell'ambiente di sviluppo integrato (IDE) di Visual Studio. Questa esercitazione è la parte 1 di una serie di esercitazioni in due parti.
In questa esercitazione vengono completate le attività seguenti:
- Creare un progetto di Visual Studio.
- Creare un'app console C#.
- Eseguire il debug dell'app.
- Chiudere l'app.
- Esamina il tuo codice completo.
In parte 2 di questa esercitazione, estendi questa app per aggiungere altri progetti, impara i trucchi di debug e riferirti a pacchetti non Microsoft.
Prerequisiti
È necessario che Visual Studio sia installato.
Se non hai Visual Studio, vai a download di Visual Studio per installarlo gratuitamente.
Creare un progetto
Per iniziare, creare un progetto di applicazione C#. Il tipo di progetto include tutti i file modello necessari.
Aprire Visual Studio e selezionare Crea un nuovo progetto nella finestra iniziale.
Nella finestra Crea un nuovo progetto selezionare C# dall'elenco a discesa del linguaggio. Scegliere Windows dall'elenco della piattaforma e Console dall'elenco dei tipi di progetto.
Dopo aver applicato i filtri di linguaggio, piattaforma e tipo di progetto, scegliere il modello applicazione console e quindi selezionare Avanti.
Nota
Se non vedi il template Applicazione Console, seleziona Installa altri strumenti e funzionalità.
Nel programma di installazione di Visual Studio selezionare il carico di lavoro di sviluppo multipiattaforma .NET Core.
Selezionare Modifica nel programma di installazione di Visual Studio. Potrebbe essere richiesto di salvare il tuo lavoro. Selezionare Continua per installare il carico di lavoro.
Tornare al passaggio 2 nella procedura Creare un progetto.
Nella finestra Configura il tuo nuovo progetto, digitare o immettere Calcolatrice nella casella nome progetto. Selezionare quindi Avanti.
Nella finestra Informazioni aggiuntive verificare che .NET Core 3.1 venga visualizzato nel campo framework di destinazione. Selezionare quindi Crea.
Visual Studio apre il tuo nuovo progetto, che include il codice predefinito Hello World. Per visualizzarla nell'editor, selezionare il file di codice Program.cs nella finestra Esplora soluzioni, che in genere si trova sul lato destro di Visual Studio.
Il codice predefinito Hello World chiama il metodo WriteLine per visualizzare la stringa letterale Hello, World! nella finestra della console. Se si preme F5, è possibile eseguire il programma predefinito in modalità debug. Dopo l'esecuzione dell'applicazione nel debugger, la finestra della console rimane aperta. Premere un tasto qualsiasi per chiudere la finestra della console.
Aprire Visual Studio e selezionare Crea un nuovo progetto nella finestra iniziale.
Nella finestra Crea un nuovo progetto selezionare C# dall'elenco a discesa del linguaggio. Scegliere Windows dall'elenco della piattaforma e Console dall'elenco dei tipi di progetto.
Dopo aver applicato i filtri di linguaggio, piattaforma e tipo di progetto, scegliere il modello App Console e quindi selezionare Avanti.
Nota
Se non viene visualizzato il template Console App, seleziona Installa altri strumenti e funzionalità.
Nel programma di installazione di Visual Studio, selezionare il workload sviluppo di applicazioni desktop .NET.
Selezionare Modifica nel programma di installazione di Visual Studio. Potrebbe essere richiesto di salvare il tuo lavoro. Selezionare Continua per installare il carico di lavoro.
Tornare al passaggio 2 di questa Creare un progetto procedura.
Nella finestra Configura il tuo nuovo progetto, digitare o immettere Calculator nella casella Nome progetto e quindi selezionare Avanti.
Nella finestra Informazioni aggiuntive, selezionare .NET 8.0 per il campo Framework di destinazione. Selezionare quindi Crea.
Visual Studio apre il nuovo progetto, che include il codice predefinito di Hello World. Per visualizzarla nell'editor, selezionare il file di codice Program.cs nella finestra Esplora soluzioni, che in genere si trova sul lato destro di Visual Studio.
La singola istruzione di codice chiama il metodo WriteLine per visualizzare la stringa letterale Hello, World! nella finestra della console. Se si preme F5, è possibile eseguire il programma predefinito in modalità debug. Dopo l'esecuzione dell'applicazione nel debugger, la finestra della console rimane aperta. Premere un tasto qualsiasi per chiudere la finestra della console.
Nota
A partire da .NET 6, i nuovi progetti che usano il modello di console generano codice diverso rispetto alle versioni precedenti. Per altre informazioni, vedere Nuovi modelli C# generano istruzioni di primo livello.
Creare l'app
In questa sezione vengono completate le attività seguenti:
- Esplorare alcuni calcoli matematici integer di base in C#.
- Aggiungere codice per creare un'app calcolatrice di base.
- Eseguire il debug dell'app per trovare e correggere gli errori.
- Perfezionare il codice per renderlo più efficiente.
Esplorare la matematica dei numeri interi
Iniziare con alcuni calcoli matematici integer di base in C#.
Nel riquadro destro selezionare Program.cs per visualizzare il file nell'editor di codice.
Nell'editor di codice eliminare il codice predefinito Hello World.
In particolare, eliminare la riga che indica
Console.WriteLine("Hello World!");
.Al suo posto immettere il codice seguente:
int a = 42; int b = 119; int c = a + b; Console.WriteLine(c); Console.ReadKey();
Si noti che quando si immette il codice, la funzionalità IntelliSense in Visual Studio suggerisce il completamento automatico dell'input.
Selezionare il pulsante verde Start accanto a Calculator per compilare ed eseguire il programma oppure premere F5.
Viene visualizzata una finestra della console che mostra la somma di 42 + 119, che è 161.
(facoltativo) È possibile modificare l'operatore per modificare il risultato. Ad esempio, è possibile modificare l'operatore
+
nella riga di codiceint c = a + b;
in-
per sottrazione,*
per la moltiplicazione o/
per la divisione. Quindi, quando si esegue il programma, anche il risultato cambia.Chiudere la finestra della console.
In Esplora soluzioni, nel riquadro destro selezionare Program.cs per visualizzare il file nell'editor di codice.
Nell'editor di codice sostituire il codice predefinito Hello World che indica
Console.WriteLine("Hello World!");
.Sostituire la riga con il codice seguente:
int a = 42; int b = 119; int c = a + b; Console.WriteLine(c); Console.ReadKey();
Se si immette il codice, la funzionalità IntelliSense di Visual Studio offre la possibilità di completare automaticamente la voce.
Per compilare ed eseguire l'app, premere F5oppure selezionare la freccia verde accanto al nome Calcolatrice nella barra degli strumenti superiore.
Viene visualizzata una finestra della console che mostra la somma di 42 + 119, che è 161.
Chiudere la finestra della console.
(facoltativo) È possibile modificare l'operatore per modificare il risultato. Ad esempio, è possibile modificare l'operatore
+
nella riga di codiceint c = a + b;
in-
per sottrazione,*
per la moltiplicazione o/
per la divisione. Quando si esegue l'app, il risultato cambia di conseguenza.
Aggiungere codice per creare una calcolatrice
Continuare aggiungendo un set di codice calcolatore più complesso al progetto.
Nell'editor di codice sostituire tutto il codice in Program.cs con il nuovo codice seguente:
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(); } } }
Selezionare il pulsante Calcolatrice o premere F5 per eseguire l'app.
Verrà visualizzata una finestra della console.
Nella finestra della console seguire le istruzioni per aggiungere i numeri 42 e 119 insieme.
L'app dovrebbe essere simile alla schermata seguente:
Nell'editor di codice sostituire tutto il codice in Program.cs con il nuovo codice seguente:
// 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();
Selezionare il pulsante Calcolatrice o premere F5 per eseguire l'app.
Verrà visualizzata una finestra della console.
Nella finestra della console seguire le istruzioni per aggiungere i numeri 42 e 119 insieme.
L'app dovrebbe essere simile alla schermata seguente:
Aggiungere funzionalità decimali
A questo punto, modificare il codice per aggiungere altre funzionalità.
L'app calcolatrice corrente accetta e restituisce solo numeri interi. Ad esempio, se si esegue l'app e si divide il numero 42 per il numero 119, il risultato è zero, che non è esatto.
Per correggere il codice per migliorare la precisione gestendo i decimali:
Da Program.cs nell'editor di Visual Studio, premere CTRL+H per aprire lo strumento Trova e sostituisci.
Digitare int nel controllo e digitare float nel campo Sostituisci.
Selezionare le icone per Maiuscole/minuscole e Corrispondenza parola intera nei controlli oppure premere ALT+C e ALT+W.
Selezionare l'icona Sostituisci tutto oppure premere ALT+A per eseguire la ricerca e sostituzione.
Esegui di nuovo l'app calcolatrice e dividi il numero 42 per il numero 119.
L'app restituisce ora un numero decimale anziché zero.
Ora l'app può produrre risultati decimali. Apportare altre modifiche al codice in modo che l'app possa calcolare anche i decimali.
Utilizzare il controllo Trova e sostituisci per modificare ogni istanza della variabile
float
indouble
e per modificare ogni istanza del metodoConvert.ToInt32
inConvert.ToDouble
.Esegui l'app calcolatrice e dividi il numero 42,5 per il numero 119,75.
L'app accetta ora valori decimali e restituisce un numero decimale più lungo come risultato.
Nella sezione Rivedere il codice si riduce il numero di posizioni decimali nei risultati.
Eseguire il debug dell'app
Hai migliorato la tua app calcolatrice di base, ma la tua app non gestisce ancora eccezioni, come errori di input dell'utente. Ad esempio, se gli utenti tentano di dividere per zero o immettere un carattere imprevisto, l'app potrebbe smettere di funzionare, restituire un errore o restituire un risultato non numerico imprevisto.
Verranno ora illustrati alcuni errori di input utente comuni, individuarli nel debugger, se visualizzati e correggerli nel codice.
Suggerimento
Per altre informazioni sul debugger e sul relativo funzionamento, vedere Esaminare prima il debugger di Visual Studio.
Correggere l'errore di divisione per zero
Se si tenta di dividere un numero per zero, l'app console potrebbe bloccarsi e quindi mostra cosa c'è di sbagliato nell'editor di codice.
Nota
A volte l'app non si blocca e il debugger non visualizza un errore di divisione per zero. L'app potrebbe invece restituire un risultato non numerico imprevisto, ad esempio un simbolo infinito. La correzione del codice seguente si applica ancora.
Modificare il codice per gestire questo errore. In Program.cssostituire il codice per case "d":
con il codice seguente:
// 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;
Dopo aver sostituito il codice, la sezione con l'istruzione switch
dovrebbe essere simile alla schermata seguente:
Ora, quando si divide un numero qualsiasi per zero, l'app chiede un altro numero e continua a chiedere finché non si specifica un numero diverso da zero.
Correggi l'errore di formato
Se si immette un carattere alfabetico quando l'app prevede un carattere numerico, l'app si blocca. Visual Studio mostra cosa c'è di sbagliato nell'editor di codice.
Per evitare questa eccezione, è possibile effettuare il refactoring del codice immesso in precedenza.
Rivedere il codice
Anziché basarsi sulla classe program
per gestire tutto il codice, è possibile dividere l'app in due classi: Calculator
e Program
.
La classe Calculator
gestisce la maggior parte del lavoro di calcolo e la classe Program
gestisce l'interfaccia utente e il lavoro di gestione degli errori.
Iniziamo.
In Program.cseliminare tutti gli elementi e aggiungere la nuova classe
Calculator
seguente: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; } }
Aggiungere anche una nuova classe
Program
, come indicato di seguito: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; } }
Selezionare il pulsante Calcolatrice o premere F5 per eseguire l'app.
Seguire le istruzioni e dividere il numero 42 in base al numero 119. I risultati dovrebbero essere simili allo screenshot seguente:
È ora possibile eseguire altri calcoli fino a quando non si sceglie di chiudere l'app console. Ci sono anche meno posizioni decimali nei risultati. Se si immette un carattere non corretto, si riceve una risposta di errore appropriata.
Rivedere il codice
Anziché basarsi sulla classe program
per gestire tutto il codice, è possibile dividere l'app in due classi: Calculator
e Program
.
La classe Calculator
gestisce la maggior parte del lavoro di calcolo e la classe Program
gestisce l'interfaccia utente e il lavoro di gestione degli errori.
Iniziamo.
In Program.cseliminare tutti gli elementi e aggiungere la nuova classe
Calculator
seguente: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; } }
Aggiungere anche una nuova classe
Program
, come indicato di seguito: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; } }
Selezionare il pulsante Calcolatrice o premere F5 per eseguire l'app.
Seguire le istruzioni e dividere il numero 42 in base al numero 119. I risultati dovrebbero essere simili allo screenshot seguente:
È ora possibile eseguire altri calcoli fino a quando non si sceglie di chiudere l'app console. Ci sono anche meno posizioni decimali nei risultati. Se si immette un carattere non corretto, si riceve una risposta di errore appropriata.
Chiudere l'app
Se non lo hai già fatto, chiudi l'app Calcolatrice.
Chiudere il riquadro Output in Visual Studio.
In Visual Studio premere CTRL+S per salvare l'app.
Aggiungere il controllo del codice sorgente Git
Ora che si dispone di un'applicazione, è possibile aggiungerla a un repository Git. Visual Studio semplifica questo processo con gli strumenti Git che è possibile usare direttamente dall'IDE.
Suggerimento
Git è il sistema di controllo della versione più diffuso. Indipendentemente dal fatto che si sia uno sviluppatore professionista o si impari a scrivere codice, Git può essere molto utile. Se non si ha familiarità con Git, il sito Web https://git-scm.com/
è un buon punto di partenza. È possibile trovare fogli di trucco, un libro online popolare e video di Base su Git.
Per associare il codice a Git, iniziare creando un nuovo repository Git in cui si trova il codice:
Nella barra di stato in basso a destra di Visual Studio selezionare Aggiungi al controllo del codice sorgentee quindi selezionare Git.
Nella finestra di dialogo Creare un repository Git accedere a GitHub:
Il nome del repository viene compilato automaticamente in base al percorso della cartella. Il tuo nuovo repository è privato per impostazione predefinita, il che significa che sei l'unico che può accedervi.
Suggerimento
Indipendentemente dal fatto che il repository sia pubblico o privato, è consigliabile disporre di un backup remoto del codice archiviato in modo sicuro in GitHub. Anche se non si lavora con un team, un repository remoto rende disponibile il codice da qualsiasi computer.
Selezionare Crea ed esegui push. Dopo aver creato il repository, nella barra di stato vengono visualizzati i dettagli sullo stato:
Usare azioni Git in Visual Studio
Ecco un breve riepilogo delle azioni Git disponibili nella barra di stato di Visual Studio:
Le frecce su/giù mostrano il numero di commit in uscita/in ingresso nel ramo corrente. È possibile usare questa icona per eseguire il pull di tutti i commit in ingresso o eseguire il push di tutti i commit in uscita.
Per visualizzare un commit specifico, selezionare la freccia su/giù e quindi selezionare Visualizzain uscita/in ingresso.
La matita mostra il numero di modifiche non committate nel tuo codice. È possibile selezionare questa icona per visualizzare le modifiche nella finestra Modifiche Git.
Il menu Git fornisce strumenti per le azioni del repository nei file. È possibile usare git fetch, pull, push e sync per il controllo delle versioni in Visual Studio.
Per altre informazioni su come usare Git con l'app, vedere Informazioni su Git in Visual Studio.
Revisione: Codice completato
In questa esercitazione sono state apportate molte modifiche all'app Calculator. L'app ora gestisce le risorse di calcolo in modo più efficiente e gestisce la maggior parte degli errori di input dell'utente.
Ecco il codice completo, tutto in un'unica posizione:
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;
}
}
Passaggio successivo
Continuare con la seconda parte di questa esercitazione: