0 0 0 1 1 1
0 0 1 2 2 2
0 1 0 1111 1111 1111
0 1 1 2222 2222 2222
1 0 0 3333 3333 3333
1 0 1 4444 4444 4444
1 1 0 5555 5555 5555
1 1 1 6666 6666 6666
. . . . . .
. . . . . .
. . . . . .
0 1 0 1111 1001 1111
0 1 1 2542 2222 2272
1 0 0 3353 3993 3343
1 0 1 4434 4654 4764
以上为数据结构,说明如下:
1. 数据行之间为回车,列之间为table键
2. 一行表示一条独立的信息,其中前三个数字表示分类,(000)(001)(010)...(111)共8类。
3. 所需实现的是每一类数据的数量,并分别求出后三列的平均值。比如(000)类,要求的是总共有多少条数据,第四列、第五列、第六列数据的平均值。
请给为高手指点,应该如何读取,并将结果写入text文本中。谢谢!

解决方案 »

  1.   

    没人吗??在线等啊!!DAGEDAJIE们
      

  2.   

    给你个例子,读的和写的都有了
    业务上面的就你自己来吧
    using System;
    using System.IO;
    class Test
    {
        public static void Main()
        {
            string path = @"c:\temp\MyTest.txt";        // This text is added only once to the file.
            if (!File.Exists(path))
            {
                // Create a file to write to.
                string[] createText = { "Hello", "And", "Welcome" };
                File.WriteAllLines(path, createText);
            }        // This text is always added, making the file longer over time
            // if it is not deleted.
            string appendText = "This is extra text" + Environment.NewLine;
            File.AppendAllText(path, appendText);        // Open the file to read from.
            string[] readText = File.ReadAllLines(path);
            foreach (string s in readText)
            {
                Console.WriteLine(s);
            }
        }
    }
      

  3.   

    完整代码,楼主可以参考下            string[] lines = File.ReadAllLines(@"C:\test.txt");
                Dictionary<string, List<int>> result = new Dictionary<string, List<int>>();
                         foreach (string line in lines)
               {
                    string[] split = line.Split(new char[]{' '},StringSplitOptions.RemoveEmptyEntries);
                    string key = string.Format("{0} {1} {2}", split[0], split[1], split[2]);
                    List<int> valList;
                    if(!result.TryGetValue(key,out valList))
                    {
                       valList = new List<int>();
                       result[key] = valList;
                    }
                    valList.AddRange(new int[] { int.Parse(split[3]), int.Parse(split[4]), int.Parse(split[5]) });
                   
               }
         
                List<string> resultLines = new List<string>();
                foreach (string key in result.Keys)
                {
                    List<int> valList = result[key];
                    int average = 0;
                    foreach (int i in valList)
                    {
                        average += i;
                    }
                    average /= valList.Count;
                   resultLines.Add(string.Format("{0} {1}", key, average));
                }
                File.WriteAllLines(@"c:\result.txt", resultLines.ToArray());
      

  4.   

    不知道这个程序错在哪里,能运行,但占用内存非常大,以至于程序未响应!!
        {
                //数量及总和
                int[, , , , , ,] num = new int[6, 2, 2, 2, 2, 2, 2];
                int[, , , , , ,] loss = new int[6, 2, 2, 2, 2, 2, 2];
                int[, , , , , ,] disaster = new int[6, 2, 2, 2, 2, 2, 2];
                int[, , , , , ,] dath = new int[6, 2, 2, 2, 2, 2, 2];
                int[, , , , , ,] injured = new int[6, 2, 2, 2, 2, 2, 2];            //平均值
                int[, , , , , ,] loss_average = new int[6, 2, 2, 2, 2, 2, 2];
                int[, , , , , ,] disaster_average = new int[6, 2, 2, 2, 2, 2, 2];
                int[, , , , , ,] dath_average = new int[6, 2, 2, 2, 2, 2, 2];
                int[, , , , , ,] injured_average = new int[6, 2, 2, 2, 2, 2, 2];
                // 读取数据并各项求和
                System.IO.StreamReader sr = new System.IO.StreamReader(openFileDialog1.FileName);
                StreamWriter jieguo = new StreamWriter("e:\\数据分析\\丫丫.txt");
                jieguo.WriteLine("用途\t构造\t避难\t消训练\t灭火\t警报\t疏散\t损失\t受灾\t受伤\t死亡\t数量");            while (!sr.EndOfStream)
                {
                    string currentLine = sr.ReadLine();
                    string[] a = System.Text.RegularExpressions.Regex.Split(currentLine, @"\s+");
                    for (int i = 0; i < 6; i++)
                    {
                        for (int j = 0; j < 2; j++)
                        {
                            for (int k = 0; k < 2; k++)
                            {
                                for (int l = 0; l < 2; l++)
                                {
                                    for (int m = 0; m < 2; m++)
                                    {
                                        for (int n = 0; n < 2; n++)
                                        {
                                            for (int p = 0; p < 2; p++)
                                            {
                                                while (Convert.ToInt32(a[0]) == i && Convert.ToInt32(a[1]) == j && Convert.ToInt32(a[2]) == k && Convert.ToInt32(a[3]) == l && Convert.ToInt32(a[4]) == m && Convert.ToInt32(a[5]) == n && Convert.ToInt32(a[6]) == p)
                                                {
                                                    num[i, j, k, l, m, n, p]++;
                                                    loss[i, j, k, l, m, n, p] += Convert.ToInt32(a[7]);
                                                    disaster[i, j, k, l, m, n, p] += Convert.ToInt32(a[8]);
                                                    injured[i, j, k, l, m, n, p] += Convert.ToInt32(a[9]);
                                                    dath[i, j, k, l, m, n, p] += Convert.ToInt32(a[10]);
                                                }                                        }
                                        }                                }
                                }                        }
                        }
                    }            }
                //计算平均值并写出            for (int i = 0; i < 6; i++)
                {
                    for (int j = 0; j < 2; j++)
                    {
                        for (int k = 0; k < 2; k++)
                        {
                            for (int l = 0; l < 2; l++)
                            {
                                for (int m = 0; m < 2; m++)
                                {
                                    for (int n = 0; n < 2; n++)
                                    {
                                        for (int p = 0; p < 2; p++)
                                        {
                                            loss_average[i, j, k, l, m, n, p] = loss[i, j, k, l, m, n, p] / num[i, j, k, l, m, n, p];
                                            disaster_average[i, j, k, l, m, n, p] = disaster[i, j, k, l, m, n, p] / num[i, j, k, l, m, n, p];
                                            injured_average[i, j, k, l, m, n, p] = injured[i, j, k, l, m, n, p] / num[i, j, k, l, m, n, p];
                                            dath_average[i, j, k, l, m, n, p] = dath[i, j, k, l, m, n, p] / num[i, j, k, l, m, n, p];
                                            jieguo.WriteLine("[0]\t[1]\t[2]\t[3]\t[4]\t[5]\t[6]\t[7]\t[8]\t[9]\t[10]\t[11]", i, j, k, l, m, n, p, loss_average[i, j, k, l, m, n, p], disaster_average[i, j, k, l, m, n, p], injured_average[i, j, k, l, m, n, p], dath_average[i, j, k, l, m, n, p], dath_average[i, j, k, l, m, n, p], num[i, j, k, l, m, n, p]);
                                        }
                                    }                            }
                            }                    }
                    }
                }            jieguo.Close();