Visual Studio 2019教程:创建一个简单的C#控制台应用程序(二)

翻译|使用教程|编辑:陈津勇|2019-11-19 11:53:12.500|阅读 38 次

概述:在本C#教程中,您将使用Visual Studio创建和运行控制台应用程序,并在此过程中探索Visual Studio集成开发环境(IDE)的某些功能。

相关链接:

免费下载Visual Studio正式版

上篇中,介绍了使用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会提示代码编辑器中的问题。

csharp-console-calculator-format-error.png

要解决此错误,必须重构我们先前输入的代码。

  • 修改代码

我们将应用分为两类: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 更多资源或正版授权的伙伴请联系【慧都客服】领取


慧都16周年·技术服务月,软件商城优惠券不限量免费放送,购物立减服务升级,享受折上折>>>



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果

文章转载自:Microsoft https://docs.microsoft.com/en-us/visualstudio/get-started/csharp/tutorial-console?view=vs-2019

登录 慧都网发表评论


暂无评论...

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
title
title
相关厂商
相关产品
Visual Studio

非常完备的工具和服务,可帮助您为 Microsoft 平台和其他平台创建各种各样的应用程序

在线
客服
在线
QQ
电话
咨询
400-700-1020
购物车 反馈 返回
顶部
在线客服系统
live chat