【问题标题】:Distance Converter for inches, feet, and yards in C#C#中英寸、英尺和码的距离转换器
【发布时间】:2013-10-13 10:53:52
【问题描述】:

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

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

【问题讨论】:

  • 错误消息说:“在预期字符串的位置找到了一个整数。但是,从整数到字符串的自动转换是不可能的”。因此,由代码手动提供此类转换。给定一个Integer,如何得到一个表示它的String?
  • 我想你在你的意思是英寸的地方输入了英尺。
  • 谢谢你们。就像我说的,我是编程新手,所以我不确定我应该怎么做才能将整数的表示形式转换为实际的整数?是的,我的意思是将“英尺”改为“英寸”:)

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


【解决方案1】:
distanceOutput.Text = toDistance.ToString();

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

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

【讨论】:

  • 感谢天顶的回复。我试过 distanceOutput.Text = toDistance.ToString();现在它说“使用未分配的局部变量”。你能告诉我这是什么意思吗?
  • @zenith 编译器告诉你,你的逻辑有一条永远不会为 toDistance 赋值的路径。您可以看到,如果 measureInput 或 measureOutput 的值不正确,则可能不会执行任何 case 语句。如果您确信这些值将始终限于您在 case 语句中检查的内容,那么您可以在方法开头声明时简单地将 toDistance 初始化为 0。
  • 啊是的!我宣布 toDistance = 0 并且它起作用了!!!非常感谢 Byron Lo!
【解决方案2】:

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

    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);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    相关资源
    最近更新 更多