Visual Studio 2019教程:创建一个简单的C#控制台应用程序(二)
在上篇中,介绍了使用VS 2019创建一个简单的控制台应用程序、探索整数数学、添加代码创建计算器等内容。本文承接上文内容,继续为大家介绍使用VS 2019创建一个简单的C#控制台应用程序的其他步骤。
向计算器添加功能
通过调整代码来添加更多功能。
加小数
计算器应用程序当前接受并返回整数。但是,如果我们添加允许使用小数的代码,它将更加精确。
如下面的屏幕截图所示,如果您运行应用程序,然后将数字42除以119,则结果为0(零),这是不正确的。
简单修改代码就可以处理小数:
1按Ctrl + F打开“Find and Replace”控件。
2、将int变量的每个实例更改为float。
确保在“Find and Replace”控件中切换“Match case (Alt+C)”和“Match whole word (Alt+W) ” 。
3、再次运行计算器应用,然后将数字42除以119。
请注意,应用程序现在返回的是十进制数字而不是零。
但是,该应用程序仅产生十进制结果。现在,继续对代码进行一些调整,让应用程序也可以计算小数。
1、使用“Find and Replace”控件(Ctrl + F)将float变量的每个实例更改为double,并将Convert.ToInt32方法的每个实例更改为Convert.ToDouble。
2、运行计算器应用,然后将数字42.5除以119.75。
请注意,该应用程序现在接受十进制值,并返回一个较长的十进制数字作为结果。
调试应用
我们在基本的计算器应用程序上进行了改进,但尚未设置故障保险柜来处理诸如用户输入错误之类的异常。
例如,如果您试图将一个数字除以0,或者在应用程序需要一个数字字符时输入一个alpha字符(反之亦然),应用程序将停止工作并返回一个错误。
接下来,我们浏览几个常见的用户输入错误,在调试器中找到它们,并在代码中修复错误。
修复“被零除”错误
当您尝试将数字除以零时,控制台应用程序将停止运行。然后,Visual Studio会提示代码编辑器中的问题。
要处理此错误,只需更改几个代码:
1、删除直接出现在的代码case "d":和注释之间的代码// Wait for the user to respond before closing。
2、将其替换为以下代码:
// 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.ToInt32(Console.ReadLine()); } Console.WriteLine($"Your result: {num1} / {num2} = " + (num1 / num2)); break; }
添加代码后,带有switch语句的部分应类似于以下屏幕截图:
现在,当您将任何数字除以零时,应用程序将提示您换一个数字,直到您提供非零的数字。
修复“格式”错误
如果在应用程序要求输入数字字符时输入字母字符(反之亦然),则控制台应用程序将停止运行。然后,Visual Studio会提示代码编辑器中的问题。
要解决此错误,必须重构我们先前输入的代码。
修改代码
我们将应用分为两类:Calculator和Program,而不是依赖程序类来处理所有代码。
Calculator类将处理大量的计算工作,而所述Program类将处理用户界面和捕获错误的工作。
1、删除以下代码块之后的所有内容:
using System; namespace Calculator {
2、添加一个新Calculator类,如下所示:
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; } }
3、然后,添加一个新Program类,如下所示:
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 an integer 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 an integer 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; } }
4、选择Calculator运行程序,或按F5。
5、按照提示将数字42除以119。应用程序应类似于以下屏幕截图:
请注意,在选择关闭控制台应用程序之前,可以选择输入更多方程式。并且,我们还减少了结果中的小数位数。
关闭应用程序
1、如果尚未执行此操作,请关闭计算器应用程序。
2、在Visual Studio中关闭“Output”窗格。
3、在Visual Studio中,按Ctrl + S保存应用程序。
4、关闭Visual Studio。
代码完成
在本教程中,我们对计算器应用程序进行了很多更改。该应用程序现在可以更有效地处理计算资源,并且可以处理大多数用户输入错误。
以下是涉及的所有代码:
using System; namespace Calculator { 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 an integer 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 an integer 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; } } }
以上就是本教程的所有内容。下一节,将介绍如何在Visual Studio中使用C#和ASP.NET Core,欢迎持续关注。
想要获取 Visual Studio 更多资源或正版授权的伙伴请联系领取