1

问题:

8 个孩子的身高正在检查,并插入。
将 8 个 double 值插入控制台,并进行算法找出最低高度和最高高度。

所以这就是我所做的:

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)

如何将字符串转换为双精度值

4

3 回答 3

3

您不能直接从字符串转换为双精度。使用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();
于 2013-10-20T17:31:02.213 回答
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;
            }

        }
    }
于 2013-10-20T17:33:50.107 回答
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();
    }
}
于 2013-10-22T07:47:03.760 回答