2

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

我在最后一行代码中有一个错误使其无法正常工作:'无法将类型'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;
    }
4

2 回答 2

3
distanceOutput.Text = toDistance.ToString();

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

顺便说一句,您可能不应该将整数用于计算值类型,因为您会丢弃小数。使用双精度或浮点数,并使用 Math.Round(number, decimalPoints) 。

于 2013-10-06T23:27:07.453 回答
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);
    }
于 2013-10-07T03:00:23.273 回答