C# For 循环不递增

本文关键字:循环 For | 更新日期: 2023-09-27 17:55:29

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

它由制表符和换行符解析

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

数组[行,数据]

所以

           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. 敌人.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
    

是不是只有我做错了什么? 无论我尝试什么,它都不会在第一个 for 循环中递增 i,因此它会将新行存储在数组的同一维度中。

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

提前谢谢。

罗尼·亨里克森

编辑:

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

[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 ).

C# For 循环不递增

您的错误在于 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++;
   }