C#中英寸,英尺和码的距离转换器

时间:2013-10-06 23:26:00

标签: c# visual-studio-2010 units-of-measurement

我对编程完全不熟悉,所以这可能是一个简单回答的愚蠢问题。我的应用程序允许用户输入数字,选择他们使用的测量单位,选择他们要转换的测量单位并进行转换。

我在最后一行代码中遇到一个错误,它阻止它工作:'不能隐式地将类型'int'转换为'string'。有人可以帮忙吗?

以下是代码:

   private void convertButton_Click(object sender, EventArgs e)
    {
        int fromDistance;
        int toDistance;

        fromDistance = int.Parse(distanceInput.Text);
        string measureInput = fromList.Items[fromList.SelectedIndex].ToString();
        string measureOutput = toList.Items[toList.SelectedIndex].ToString();

        switch (measureInput)
        {
            case "Yards":
                switch (measureOutput)
                {
                    case "Yards":
                        toDistance = fromDistance;
                        break;
                    case "Feet":
                        toDistance = fromDistance * 3;
                        break;
                    case "Foot":
                        toDistance = fromDistance * 3 * 12;
                        break;
                }
                break;
            case "Feet":
                switch (measureOutput)
                {
                    case "Feet":
                        toDistance = fromDistance;
                        break;
                    case "Yards":
                        toDistance = fromDistance / 3;
                        break;
                    case "Foot":
                        toDistance = fromDistance * 12;
                        break;
                }
                break;
            case "Foot":
                switch (measureOutput)
                {
                    case "Foot":
                        toDistance = fromDistance;
                        break;
                    case "Feet":
                        toDistance = fromDistance / 12;
                        break;
                    case "Yards":
                        toDistance = fromDistance / (3 * 12);
                        break;
                }
                break;
        }
        distanceOutput.Text = toDistance;
    }

2 个答案:

答案 0 :(得分:2)

distanceOutput.Text = toDistance.ToString();

看起来您可能习惯于动态输入语言? int以二进制表示形式存储,并且可以表示许多不同的值。 .ToString()转换为最常见的表示形式。

顺便说一下,您可能不应该为计算值类型使用整数,因为您将丢弃小数。使用double或float,并使用Math.Round(number,decimalPoints)。

答案 1 :(得分:0)

您可以使用枚举将输入/输出字符串转换为转换数字。这样做的好处是可以大大简化代码。但是,您必须确保列表中的字符串与枚举中的名称完全匹配。这个简单的算法将从任何输入转换为任何输出。

    enum Conversions
    {
        Inches = 1,
        Feet = 12,
        Yards = 36
    }

   private void convertButton_Click(object sender, EventArgs e)
    {
        int fromDistance = 0;
        int toDistance = 0;

        fromDistance = int.Parse(distanceInput.Text);

        Conversions measureinput = ((Conversions)Enum.Parse(typeof(Conversions), fromList.Items[fromList.SelectedIndex].ToString());

        Conversions measureoutput = (Conversions)Enum.Parse(typeof(Conversions), toList.Items[toList.SelectedIndex].ToString());

        toDistance = (fromdistance * (int)measureinput) / (int)measureoutput;

        distanceOutput.Text = toDistance.ToString()+ " " + Enum.GetName(typeof(Conversions), measureoutput);
    }