Tutorial: Creación de una aplicación de consola de C# sencilla en Visual Studio (parte 1 de 2)
En este tutorial, usará Visual Studio para crear y ejecutar una aplicación de consola de C# y explorará algunas características del entorno de desarrollo integrado (IDE) de Visual Studio. Este tutorial es la parte 1 de una serie de tutoriales de dos partes.
En este tutorial, completará las siguientes tareas:
- Cree un proyecto de Visual Studio.
- Cree una aplicación de consola de C#.
- Depure la aplicación.
- Cierre la aplicación.
- Inspeccione el código completo.
En la parte 2 de este tutorial, amplías esta aplicación para agregar más proyectos, aprendes trucos de depuración y haces referencia a paquetes que no son de Microsoft.
Prerrequisitos
Debe tener Visual Studio instalado.
Si no tiene Visual Studio, vaya a la página Descargas de Visual Studio para instalarlo de forma gratuita.
Creación de un proyecto
Para empezar, cree un proyecto de aplicación de C#. El tipo de proyecto incluye todos los archivos de plantilla que necesita.
Abra Visual Studio y seleccione Crear un nuevo proyecto en la ventana de inicio.
En la ventana Crear un nuevo proyecto, seleccione C# de la lista desplegable de lenguajes. Elija Windows en la lista de plataformas y Console en la lista de tipos de proyecto.
Después de aplicar los filtros de lenguaje, plataforma y tipo de proyecto, elija la plantilla Aplicación de Consola y, a continuación, seleccione Siguiente.
Nota
Si no ve la plantilla Aplicación de consola, seleccione Instalar más herramientas y características.
En Instalador Visual Studio, seleccione la carga de trabajo Desarrollo multiplataforma de .NET Core.
Seleccione Modificar en el Instalador de Visual Studio. Es posible que se le pida que guarde su trabajo. Seleccione Continuar para instalar la carga de trabajo.
Vuelva al paso 2 del procedimiento Crear un proyecto.
En la ventana Configurar el nuevo proyecto, escriba Calculator en el cuadro Nombre del proyecto. A continuación, seleccione Siguiente.
En la ventana Información adicional, compruebe que .NET Core 3.1 aparece en el campo Marco de Destino. A continuación, seleccione Crear.
Visual Studio abre el nuevo proyecto, que incluye el código predeterminado Hello World. Para verlo en el editor, seleccione el archivo de código Program.cs en la ventana Explorador de soluciones, que normalmente se encuentra en el lado derecho de Visual Studio.
El código predeterminado Hello World llama al método WriteLine para mostrar la cadena literal Hello, World! en la ventana de la consola. Si presiona F5, puede ejecutar el programa predeterminado en modo de depuración. Una vez que la aplicación se ejecuta en el depurador, la ventana de la consola permanece abierta. Presione cualquier tecla para cerrar la ventana de la consola.
Abra Visual Studio y seleccione Crear un nuevo proyecto en la ventana de inicio.
En la ventana Crear un nuevo proyecto, seleccione C# de la lista desplegable de lenguajes. Elija Windows en la lista de plataformas y Console en la lista de tipos de proyecto.
Después de aplicar los filtros de idioma, plataforma y tipo de proyecto, seleccione la plantilla aplicación de consola y, a continuación, seleccione Siguiente.
Nota
Si no ve la plantilla Aplicación de consola, seleccione Instalar más herramientas y características.
En Instalador Visual Studio, seleccione la carga de trabajo Desarrollo de escritorio de .NET.
Seleccione Modificar en el Instalador de Visual Studio. Es posible que se le pida que guarde su trabajo. Seleccione Continuar para instalar la carga de trabajo.
Vuelva al paso 2 del procedimiento Crear un proyecto.
En la ventana Configurar el nuevo proyecto, escriba Calculator en el cuadro Nombre del proyecto y, a continuación, seleccione Siguiente.
En la ventana Información adicional seleccione .NET 8.0 para el campo Plataforma de destino. A continuación, seleccione Crear.
Visual Studio abre el nuevo proyecto, que incluye el código predeterminado Hello World. Para verlo en el editor, seleccione el archivo de código Program.cs en la ventana Explorador de soluciones, que normalmente se encuentra en el lado derecho de Visual Studio.
La instrucción de código único llama al método WriteLine para mostrar la cadena literal Hello, World! en la ventana de la consola. Si presiona F5, puede ejecutar el programa predeterminado en modo de depuración. Una vez que la aplicación se ejecuta en el depurador, la ventana de la consola permanece abierta. Presione cualquier tecla para cerrar la ventana de la consola.
Nota
A partir de .NET 6, los nuevos proyectos que usan la plantilla de consola generan código diferente al de las versiones anteriores. Para obtener más información, consulte Nuevas plantillas de C# generan declaraciones de nivel superior.
Creación de la aplicación
En esta sección, completará las siguientes tareas:
- Explore algunas matemáticas básicas de enteros en C#.
- Agregue código para crear una aplicación de calculadora básica.
- Depurar la aplicación para buscar y corregir errores.
- Refinar el código para que sea más eficaz.
Exploración de matemáticas de enteros
Comience con algunas matemáticas de enteros básicas en C#.
En el panel derecho, seleccione Program.cs para mostrar el archivo en el editor de código.
En el editor de código, elimine el código predeterminado Hello World.
En concreto, elimine la línea que indica
Console.WriteLine("Hello World!");
.En su lugar, escriba el código siguiente:
int a = 42; int b = 119; int c = a + b; Console.WriteLine(c); Console.ReadKey();
Tenga en cuenta que, al escribir el código, la característica IntelliSense de Visual Studio le ofrece la opción de autocompletar la entrada.
Seleccione el botón verde Iniciar junto a Calculator para compilar y ejecutar el programa, o presione F5.
Se abre una ventana de consola que revela la suma de 42 + 119, que es 161.
(opcional) Puede cambiar el operador para cambiar el resultado. Por ejemplo, puede cambiar el operador
+
de la línea de códigoint c = a + b;
a-
para la resta,*
para la multiplicación o/
para la división. A continuación, al ejecutar el programa, también cambia el resultado.Cierre la ventana de la consola.
En Explorador de Soluciones, en el panel derecho, seleccione Program.cs para mostrar el archivo en el editor del código.
En el editor de código, reemplace el código predeterminado Hello World que indica
Console.WriteLine("Hello World!");
.Reemplace la línea por el código siguiente:
int a = 42; int b = 119; int c = a + b; Console.WriteLine(c); Console.ReadKey();
Si escribe el código, la característica IntelliSense de Visual Studio le ofrece la opción de autocompletar la entrada.
Para compilar y ejecutar la aplicación, presione F5 o seleccione la flecha verde situada junto al nombre Calculator en la barra de herramientas superior.
Se abre una ventana de consola que muestra la suma de 42 + 119, que es 161.
Cierre la ventana de la consola.
(opcional) Puede cambiar el operador para cambiar el resultado. Por ejemplo, puede cambiar el operador
+
de la línea de códigoint c = a + b;
a-
para la resta,*
para la multiplicación o/
para la división. Al ejecutar la aplicación, el resultado cambia en consecuencia.
Adición de código para crear una calculadora
Continúe agregando un conjunto más complejo de código de calculadora al proyecto.
En el editor de código, reemplace todo el código de Program.cs por el código nuevo siguiente:
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(); } } }
Seleccione el botón Calculadora o presione F5 para ejecutar su app.
Se abre una ventana de consola.
En la ventana de la consola, siga las indicaciones para agregar los números 42 y 119 juntos.
La aplicación debe tener un aspecto similar a la captura de pantalla siguiente:
En el editor de código, reemplace todo el código de Program.cs por el código nuevo siguiente:
// 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();
Seleccione el botón Calculadora o presione F5 para ejecutar la aplicación.
Se abre una ventana de consola.
En la ventana de la consola, siga las indicaciones para agregar los números 42 y 119 juntos.
La aplicación debe tener un aspecto similar a la captura de pantalla siguiente:
Adición de funcionalidad decimal
Ahora, ajuste el código para agregar más funcionalidad.
La aplicación de calculadora actual solo acepta y devuelve números enteros. Por ejemplo, si ejecuta la aplicación y divide el número 42 por el número 119, el resultado es cero, que no es exacto.
Para corregir el código para mejorar la precisión mediante el control de decimales:
En Program.cs en el editor de Visual Studio, presione Ctrl+H para abrir el control Buscar y reemplazar.
Escriba int en el control y escriba float en el campo Reemplazar.
Seleccione los iconos de Coincidir mayúsculas y minúsculas y Solo palabras completas en el control, o presione Alt+C y Alt+W.
Seleccione el icono Reemplazar todo o presione Alt+A para ejecutar la búsqueda y reemplazar.
Vuelva a ejecutar la aplicación de calculadora y divida el número 42 por el número 119.
La aplicación ahora devuelve un número decimal en lugar de cero.
Ahora la aplicación puede generar resultados decimales. Realice algunos ajustes más en el código para que la aplicación también pueda calcular decimales.
Use el control Buscar y reemplazar para cambiar cada instancia de la variable
float
adouble
y para cambiar cada instancia del métodoConvert.ToInt32
aConvert.ToDouble
.Ejecute la aplicación de calculadora y divida el número 42,5 por el número 119,75.
La aplicación ahora acepta valores decimales y devuelve un número decimal más largo como resultado.
En la sección Revisar el código, puedes reducir el número de posiciones decimales en los resultados.
Depurar la aplicación
Ha mejorado la aplicación de calculadora básica, pero la aplicación aún no controla las excepciones, como los errores de entrada del usuario. Por ejemplo, si los usuarios intentan dividir por cero o escriben un carácter inesperado, la aplicación podría dejar de funcionar, devolver un error o devolver un resultado no numérico inesperado.
Vamos a examinar algunos errores comunes de entrada de usuario, localizarlos en el depurador si aparecen allí y corregirlos en el código.
Sugerencia
Para obtener más información sobre el depurador y cómo funciona, consulte Primer vistazo al depurador de Visual Studio.
Corregir el error división entre cero
Si intenta dividir un número por cero, la aplicación de consola podría inmovilizarse y, a continuación, muestra lo que está mal en el editor de código.
Nota
A veces, la aplicación no se inmoviliza ni el depurador muestra un error de división por cero, En su lugar, la aplicación podría devolver un resultado no numérico inesperado, como un símbolo infinito. Todavía se aplica la siguiente corrección de código.
Vamos a cambiar el código para controlar este error. En Program.cs, reemplace el código de case "d":
por el código siguiente:
// 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;
Después de reemplazar el código, la sección con la instrucción switch
debe ser similar a la siguiente captura de pantalla:
Ahora, cuando divides cualquier número por cero, la aplicación solicita otro número y sigue preguntando hasta que proporciones un número distinto de cero.
Corregir el error de formato
Si escribe un carácter alfabético cuando la aplicación espera un carácter numérico, la aplicación se inmoviliza. Visual Studio muestra lo que está mal en el editor de código.
Para evitar esta excepción, puede refactorizar el código que escribió anteriormente.
Revisión del código
En lugar de confiar en la clase program
para controlar todo el código, puedes dividir la aplicación en dos clases: Calculator
y Program
.
La clase Calculator
controla la mayor parte del trabajo de cálculo y la clase Program
controla la interfaz de usuario y el trabajo de control de errores.
Comencemos.
En Program.cs, elimine todo y agregue la siguiente clase
Calculator
nueva: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; } }
Agregue también una nueva clase
Program
, como se indica a continuación: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; } }
Seleccione el botón Calculadora o presione F5 para ejecutar la aplicación.
Siga las indicaciones y divida el número 42 por el número 119. Los resultados deben ser similares a la captura de pantalla siguiente:
Ahora puede ejecutar más cálculos hasta que decida cerrar la aplicación de consola. También hay menos posiciones decimales en los resultados. Y si introduce un carácter incorrecto, obtendrá una respuesta de error adecuada.
Revisión del código
En lugar de confiar en la clase program
para controlar todo el código, puedes dividir la aplicación en dos clases: Calculator
y Program
.
La clase Calculator
controla la mayor parte del trabajo de cálculo y la clase Program
controla la interfaz de usuario y el trabajo de control de errores.
Comencemos.
En Program.cs, elimine todo y agregue la siguiente clase
Calculator
nueva: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; } }
Agregue también una nueva clase
Program
, como se indica a continuación: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; } }
Seleccione el botón Calculadora o presione F5 para ejecutar su aplicación.
Siga las indicaciones y divida el número 42 por el número 119. Los resultados deben ser similares a la captura de pantalla siguiente:
Ahora puede ejecutar más cálculos hasta que decida cerrar la aplicación de consola. También hay menos posiciones decimales en los resultados. Si introduces un carácter incorrecto, recibirás una respuesta de error adecuada.
Cerrar la aplicación
Si aún no lo ha hecho, cierre la aplicación Calculadora.
Cierre el panel Salida en Visual Studio.
En Visual Studio, presione Ctrl+S para guardar la aplicación.
Adición del control de código fuente de Git
Ahora que tiene una aplicación, es posible que quiera agregarla a un repositorio de Git. Visual Studio facilita ese proceso con las herramientas de Git que puede usar directamente desde el IDE.
Sugerencia
Git es el sistema de control de versiones moderno más usado. Tanto si es desarrollador profesional como si está aprendiendo a codificar, Git puede ser muy útil. Si no está familiarizado con Git, el sitio web de https://git-scm.com/
es un buen lugar para empezar. Puede encontrar hojas de referencia rápida, un libro en línea popular y vídeos de Git Basics.
Para asociar el código a Git, empiece por crear un nuevo repositorio de Git donde se encuentra el código:
En la barra de estado de la parte inferior derecha de Visual Studio, seleccione Agregar al control de código fuentey, a continuación, seleccione Git.
En el cuadro de diálogo Crear un repositorio Git, conéctese a GitHub:
El nombre del repositorio se autocompleta según la ubicación de la carpeta. El nuevo repositorio es privado de forma predeterminada, lo que significa que es el único que puede acceder a él.
Sugerencia
Tanto si el repositorio es público como privado, es mejor tener una copia de seguridad remota del código almacenado de forma segura en GitHub. Incluso si no está trabajando con un equipo, un repositorio remoto pone el código a su disposición desde cualquier equipo.
Seleccione Crear y enviar los cambios. Después de crear el repositorio, verá los detalles de estado en la barra de estado:
Uso de acciones de Git en Visual Studio
Este es un breve resumen de las acciones de Git disponibles en la barra de estado de Visual Studio:
Las flechas arriba/abajo muestran cuántas confirmaciones salientes o entrantes se encuentran en la rama actual. Puede usar este icono para extraer las confirmaciones entrantes o insertar las confirmaciones salientes.
Para ver una confirmación específica, seleccione la flecha arriba/abajo y, a continuación, seleccione Ver salientes o entrantes.
El lápiz muestra el número de cambios no confirmados en tu código. Puede seleccionar este icono para ver esos cambios en la ventana cambios de Git .
El menú Git proporciona herramientas para las acciones del repositorio en tus archivos. Puede usar la captura, extracción, inserción y sincronización de Git para el control de versiones en Visual Studio.
Para obtener más información sobre cómo usar Git con la aplicación, consulte Acerca de Git en Visual Studio.
Revisión: Código completado
En este tutorial, ha realizado muchos cambios en la aplicación Calculadora. La aplicación ahora controla los recursos informáticos de forma más eficaz y controla la mayoría de los errores de entrada del usuario.
Este es el código completo, todo en un solo lugar:
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;
}
}
Paso siguiente
Continúe con la segunda parte de este tutorial: