C#For循环不递增

时间:2014-03-30 10:58:04

标签: c# for-loop increment

我这里有一些代码,应该打开一个文本文件并解析它。

它由Tabs和换行符

解析

据我所见,它应该将解析后的数据存储在二维数组中。

阵列[线,数据]

所以

           System.IO.FileInfo enemyFile = new System.IO.FileInfo("Data\\enemies.txt"); 
        System.IO.StreamReader enemies = enemyFile.OpenText();
        string line;
        string[,] enemyInfo = new string[20,20]; // Array to store parsed text

        while ((line = enemies.ReadLine()) != null)
        {
            string[] items = line.Split('\n');
            string[] newItems;
            for (int i = 0; i < items.Length; i++)
            {
                Console.WriteLine(i);
                newItems = items[i].Split('\t');
                for (int i2 = 0; i2 < newItems.Length; i2++)
                {
                    enemyInfo[i, i2] = newItems[i2];
                    //testArray.ListArray(newItems);
                    Console.WriteLine("[{0},{1}] = {2}", i, i2, enemyInfo[i, i2]);
                    Console.ReadLine();

                }
                Console.WriteLine("-");

            }

应该将第一行中的第一个解析数据放入enemyInfo [0,0],并将第一行中的下一个解析数据放入enemyInfo [0,1],依此类推。

在换行时,它应该开始将数据存储在enemyInfo [1,0]中,然后存储在enemyInfo [1,1]中,依此类推。

  1. Enemies.txt

    Name of Race    Race_ID Class_ID    Sex_ID  ToHit   Evade   Damage  Strength    Dexterity   Constitution    Intelligence    Charisma    Wisdom  Experience  Level
    Goblin  0   0   2   0   1   -1  6   8   6   4   4   4   1   1
    Kobold  1   0   2   1   1   0   8   8   8   6   4   4   3   2
    
  2. 只是我做错了吗?无论我尝试什么,它都不会在第一个for循环中增加i,因此它会将新行存储在数组的相同维度中。

    希望我提供了足够的信息。

    提前致谢。

    // Ronnie Henriksen

    编辑:

    忘记添加我得到的输出示例。

    [0,0] = Name of race
    [0,1] = Race
    and so on up to [0,14] and then it does this:
    [0,0] = Goblin
    [0,1] = 0
    and so on, up to [0,14] and then it does the same with the next line ( kobold ).
    

1 个答案:

答案 0 :(得分:4)

您的错误是将ReadLine读取的行与\n分开时,您应该使用\t直接拆分此行

   int i = 0;
   while ((line = enemies.ReadLine()) != null)
   {
        string[] items = line.Split('\t');
        for (int i2 = 0; i2 < items.Length; i2++)
        {
            Console.WriteLine(i2);
            enemyInfo[i, i2] = items[i2];
            Console.WriteLine("[{0},{1}] = {2}", i, i2, enemyInfo[i, i2]);
            Console.ReadLine();
        }
        i++;
   }