寻求一些帮助。我确定它真的很容易,但我似乎无法理解它。
首先,到目前为止,这是我的代码:
//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;。我已经发现我需要将字符串转换为双倍,但我并不完全确定如何做到这一点。
由于
答案 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方法