(锯齿数组)数组中的一个数组:在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];
}
}
}
谢谢
这种类型的初始化只适用于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级,但它的工作:)