我写了一个应用程序,它读取一个由数字组成的文本文件,然后将它们转换为双数组,然后对我计算平均值,标准偏差,方差等的数字进行一些数学计算。
我的问题是,如果文本文件包含大量值,我如何调整大小/设置数组以仅获取前50个值?
这是我的代码:
FileReaderClass fr = new FileReaderClass();
CalculatorClass calc = new CalculatorClass();
string[] readText = fr.ReadFile(fileName);
double[] data = fr.ConvertToDoubleArray(readText);
if (data.Length < 5)
{
MessageBox.Show("There are not enough data points in this file to perform the calculation.");
return;
}
else if (data.Length > 50)
{
//limit the array to the first 50 values. Then perform the calculations...
}
//else perform the calculations.....
答案 0 :(得分:6)
使用Array.Resize
:
else if (data.Length > 50)
{
//limit the array to the first 50 values. Then perform the calculations...
Array.Resize(ref data, 50);
}
重新分配数组。
请注意,如果当前大小小于50的限制,这会增加数组的大小,因此您应该检查if (data.Length > 50)
。
答案 1 :(得分:5)
您无法调整数组大小,但可以使用Take
方法获取前50个项目。
另一种方法是首先阅读50行,如@Habib在评论中提到的那样,你可以使用File.ReadLines
方法轻松完成:
string[] readText = File.ReadLines("path").Take(50).ToArray();