(锯齿数组)数组中的一个数组:在while循环中自动创建,如何初始化

本文关键字:数组 初始化 创建 循环 一个 while | 更新日期: 2023-09-27 18:15:20

我想从一个文本文件中创建一个数组的数组…

有20000行,每行有21个字符串,以','分隔。

我想读取每一行并使其成为一个数组,每一行都是一个新的数组。

我想创建一个锯齿数组像这样开始:

string[][] SqlArray = new string[200000][21];

但是它给出:ERROR MESSAGE: Invalid rank specifier: expected ',' or]

如何创建或初始化这个数组?

我将像这样填充数组中的数据:

,(真正的){

            string theline = readIn.ReadLine();
            if (theline == null) break;
            string[] workingArray = theline.Split(',');
            for (int i = 0; i < workingArray.Length; i++)
            {
                for (int k = 0; k < 20; k++)
            {
               SqlArray[i][k] = workingArray[k];
             }

            }
        }

谢谢

(锯齿数组)数组中的一个数组:在while循环中自动创建,如何初始化

这种类型的初始化只适用于Java。必须声明一个数组的数组,然后在循环中初始化每个数组。

string[][] SqlArray = new string[21][];
for(int index = 0; index < SqlArray.Length; index++)
{
    SqlArray[index] = new string[2000000];
}

或者,您可以使用非锯齿数组。它可能会满足你的需要。

string[,] SqlArray = new string[21 , 2000000];

可以这样访问:

SqlArray[2,6264] = x;

对于任何感兴趣的人来说,这是我最终实现它的方式:

   TextReader readIn = File.OpenText("..''..''datafile.txt");

string[][] SqlArray = new string[rowNumCreate][];

        int e = 0;
        while (true)
        {
            string theline = readIn.ReadLine();
            if (theline == null) break;
            string[] workingArray = theline.Split(',');
            SqlArray[e] = new string[valuesInRow +1];
            for (int k = 0; k < workingArray.Length; k++)
            {
                SqlArray[e][k] = workingArray[k];
            }
            e++;
        }

正在读取的文件是一个简单的模拟数据库,设置为平面文件,它是自动生成的,用于测试我正在实现的算法,该算法适用于锯齿数组;因此,我只是为了方便使用和随意增加和减少大小而创建了这个数据库,而不是使用数据库。

下面是构建文本文件的代码:

随机集中;

skill_id = new Random();//int counter =0;

        string seedvalue = TicksToString();
        int rowNumCreate = 200000;
        int valuesInRow = 20;

        string lineInFile = seedvalue;
        string delimiter = ",";

        for (int i = 0; i < rowNumCreate; i++)
        {
            for (int t = 0; t < valuesInRow; t++)
            {
                int skill = skill_id.Next(40);
                string SCon = Convert.ToString(skill);
                lineInFile += delimiter + SCon;
            }
            if (rowNumCreate >= i + 1)
            {
                dataFile.WriteLine(lineInFile);
                lineInFile = "";

                string userPK = TicksToString();
                lineInFile += userPK;
            }
        }
        dataFile.Close();

    public static string TicksToString()
    {
        long ms = DateTime.Now.Second;
        long ms2 = DateTime.Now.Millisecond;
        Random seeds;
        seeds = new Random();
        int ran = seeds.GetHashCode();
        return string.Format("{0:X}{1:X}{2:X}", ms, ms2, ran).ToLower();
    }

我仍然是一个学生,所以不确定如果代码是a级,但它的工作:)