如何在C#中将split string(字符串数组)转换为double?

时间:2013-10-20 17:28:59

标签: c# string double

问题:

正在检查并插入8个孩子的身高 将8个双精度值插入控制台,并制作算法以找出最低高度和最小值。最大高度。

所以这就是我所做的:

class work1 {
    public static void Main(String[] args) {
        string[] height = Console.ReadLine().Split(' ');
        double[] heightInDouble = new Double[height.Length];
        for (int i = 0; i <= height.Length; i++) {
            heightInDouble[i] = (double) height[i]; // line 20
        }

        Console.WriteLine("Highest: " + heightInDouble.Max() + " Lowest: " + heightInDouble.Min());
    }
}

结果:

  

错误:无法将类型'string'转换为'double'(20)

如何将字符串转换为双倍值

3 个答案:

答案 0 :(得分:3)

你不能直接从字符串转换为double。使用double.Parse

realInts[i] = double.Parse( ints[i] );

您可能还想使用TryParse,因为此处不确定该字符串实际上是一个数字:

double parsedValue;
realInts[i] = double.TryParse(ints[i], out parsedValue) ? parsedValue : 0;

还有一点需要注意:您可以使用Linq表达式链简化语法:

double parsedVal;
double[] realInts = Console.ReadLine().Split(' ')
    .Select(str => double.TryParse(str, out parsedVal) ? parsedVal : 0)
    .ToArray();

答案 1 :(得分:1)

试试这个。

static void Main(string[] args)
    {
        string[] ints = Console.ReadLine().Split(' ');
        double[] realInts = new Double[ints.Length];
        for (int i = 0; i <= ints.Length; i++)
        {
            double val;
            if (Double.TryParse(ints[i], out val))
            {
                realInts[i] = val; // line 20
            }
            else
            {
                // Unable to parse
                realInts[i] = 0;
            }

        }
    }

答案 2 :(得分:0)

使用此代码

class work1
{
    public static void Main(String[] args)
    {
        string[] height = Console.ReadLine().Split(' ');
        double[] heightInDouble = new Double[height.Length];
        for (int i = 0; i < height.Length; i++)
        {
            heightInDouble[i] = Convert.ToDouble(height[i]); // line 20
        }

        Console.WriteLine("Highest: " + heightInDouble.Max() + " Lowest: " + heightInDouble.Min());
        Console.ReadLine();
    }
}