0

我是 C# 的新手,正在尝试构建一种计算器应用程序,该应用程序将从 csv 文件中读取值,然后继续进行所需的操作。

计算器算法工作正常,但我需要从 csv 文件填充数组。我使用 StreamReader 如下,但它将所有值放入一个数组中:

FileStream aFile = new FileStream("d:\test.txt", FileMode.Open, FileAccess.Read);
                StreamReader sr = new StreamReader(aFile);
                strLine = sr.ReadLine();
               while (strLine != null)
                {
                    strArray = strLine.Split(charArray);
                    for (int x = 1; x <= strArray.GetUpperBound(0); x++)
                    {
                        Console.WriteLine(strArray[x].Trim());

我需要将单独的行读入单独的数组,这些行可以是动态的(即 csv 文件可以有 n 行,这需要 n 个数组)。计算器算法如下,工作正常。我只需要如何使用上面的代码将 csv 读入数组并在下面的代码中使用这些数组(下面的代码虽然是摘录,但工作正常)。请提供任何帮助。

for (int p = 0; p < n; p++)   
       { 
         for (int j = 0; j < t; j++)
            {
                sum[j] = w[p, j] * a[p, j];
                k[p] = k[p] + sum[j];
            }
        }
        double loa=0;
        for (int i = 0; i < n; i++)
        {
            loa1[i] = k[i] * v[i];
            loa += loa1[i];
4

2 回答 2

0

非常感谢大家的评论和帮助-非常感谢。我能够使用以下方法分别读取行:

using (TextFieldParser fieldParser = new TextFieldParser(name)) "d:\\test1.txt"))
        {
          parts = fieldParser.ReadFields();

然后使用以下方法将来自不同行的值保存在双精度数组中:

double[] array = Array.ConvertAll(parts, double.Parse);

然后我使用计数器和 EndOfData 属性来管理定义单独数组的线路开关:

counter++;
if (fieldParser.EndOfData)
                {

再次感谢。5 月计算器现在正在工作,可在http://thaddeus-eze.com获得

于 2012-10-29T13:30:08.813 回答
0

TextFieldParser类非常适合读取 CSV 文件。

TextFieldParser parser = new TextFieldParser("filename.txt");
parser.Delimiters = new[] { "," };
while (!parser.EndOfData)
{
    string[] fields = parser.ReadFields();
    //process this line of fields, or store it for later processing
}

然后,您可以使用int.TryParsedouble.TryParse将适当的字符串转换为数值。

于 2012-10-03T18:09:00.617 回答