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 配列に保持します。

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.TryParseまたはを使用double.TryParseして、適切な文字列を数値に変換できます。

于 2012-10-03T18:09:00.617 に答える