C#字符串数组加倍

时间:2017-04-02 09:50:17

标签: c# arrays string visual-studio-2013 double

寻求一些帮助。我确定它真的很容易,但我似乎无法理解它。

首先,到目前为止,这是我的代码:

        //Prompts user to enter numbers
    Console.Write("Enter a line of comma-seperated temperatures: ");
    string temps = Console.ReadLine();
    //Splits commas, seperating numbers into array
    string[] numsInString = temps.Split(',');
    int temps1 = numsInString.Length;
    int[] temps2 = new int[temps1];
    for (int i = 0; i < numsInString.Length; i++)
    {
        temps2[i] = int.Parse(numsInString[i]);
    }


    Console.WriteLine("Minimum temp: " + temps2.Min());
    Console.WriteLine("Average temp: " + temps2.Average());

因此,它会提示用户输入温度,即&#34; 5&#34;用逗号分隔,&#34; 5,6,7,8&#34;。我的麻烦是我不能有小数范围的温度,例如&#34; 5.4,5.7,6.3,6.8和#34;。我已经发现我需要将字符串转换为双倍,但我并不完全确定如何做到这一点。

由于

2 个答案:

答案 0 :(得分:2)

您想要将数组的类型更改为double[],然后将解析更改为解析double而不是int

double[] temps2 = new double[temps1];

for (int i = 0; i < numsInString.Length; i++)
{
    temps2[i] = double.Parse(numsInString[i]);
}

稍作一点,您也可以使用LINQ以声明方式表达:

double[] temps2 = temps.Split(',')
    .Select(double.Parse)
    .ToArray();

答案 1 :(得分:1)

正如其他答案和评论中已经提到的,您需要将int[]数组更改为double[]数组,并使用double.Parse方法将字符串解析为双倍。

但不是循环或LINQ,我想建议Array.ConvertAll方法,它将字符串数组转换为双精度数组。

Console.Write("Enter a line of comma-seperated temperatures: ");
var rawData = Console.ReadLine();
var rawTemperatures = rawData.Split(',');  
var temperatures = Array.ConvertAll<string, double>(rawTemperatures, double.Parse);

Array.ConvertAll方法将执行相同的for循环,但是会非常小(在您的情况下)更有效且足够的声明然后LINQ方法