我的代码有效,但是我不完全了解

时间:2018-08-12 06:27:32

标签: c#

using System;

namespace SimpleweightConversion
{
    public class PoundstoKilos
    {
        public static void Main()
        {
            double pounds = 0.0;
            Console.Write("How many pounds?  ");
            double.TryParse(Console.ReadLine(), out pounds);
            double kilograms = pounds * 0.453592;
            Console.WriteLine("{0} pounds is equal to {1} kilograms", pounds, 
            kilograms);
            Console.WriteLine("Press enter to exit.");
            Console.ReadLine();
        }
    }
}

我正在尝试学习C#,我创建了这段代码来将磅数转换为千克,我添加了tryparse位以避免用户在程序中抛出数字以外的错误,并且它有效!我遇到的问题是,它没有明确显示何时将用户输入分配给磅变量,因为一开始,磅变量的值为0.0,但是在某些时候,用户提供的值被分配给了英镑变量,或者至少是我认为正在发生的事情。

4 个答案:

答案 0 :(得分:2)

Microsoft Docs开始,TryParse()的语法为:

public static bool TryParse(
    string s,
    out double result
)

这意味着如果字符串s是数字,则其解析值将立即分配给变量result。 在代码中,您有double.TryParse(Console.ReadLine(), out pounds);行 在这种情况下,来自控制台的输入将解析为双精度,并在可能的情况下分配给pounds

答案 1 :(得分:1)

pounds方法中,用户输入被分配给TryParse()变量。

out修饰符表示参数正在通过引用传递-这意味着方法调用中对参数(在这种情况下为pounds)所做的任何更改都将应用于实际变量。

答案 2 :(得分:0)

当您使用控制台接受用户输入时,将分配该值。 ReadLine()方法。 “即double.TryParse(Console.ReadLine(),以磅为单位);” 用户的输入被提取到磅变量中。

答案 3 :(得分:0)

其他答案已说明您的错误。我以为我只是向您展示如何编写代码以使其更易于理解:

public class PoundsToKilos
{
    public static void Main()
    {
        double pounds = 0.0;
        Console.Write("How many pounds?  ");
        if (double.TryParse(Console.ReadLine(), out pounds))
        {
            //`pounds` has been assigned a value
            double kilograms = pounds * 0.453592;
            Console.WriteLine("{0} pounds is equal to {1} kilograms", pounds, kilograms);
        }
        else
        {
            //`pounds` has NOT been assigned a value
            Console.WriteLine("You didn't enter a valid number.");
        }
        Console.WriteLine("Press enter to exit.");
        Console.ReadLine();
    }
}