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

时间:2015-09-29 16:33:28

标签: c# arrays

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

每行有20000行,每行包含21个字符串,','

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

所以我想通过这样开始创建锯齿状数组:

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

但是它给出了:错误消息:无效的等级说明符:预期','或者]

我如何创建此数组或初始化它?

我将填充数组中的数据,如下所示:

while(true)             {

            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];

             }


            }
        }

谢谢

2 个答案:

答案 0 :(得分:0)

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

from pylab import *
from scipy import *
from StringIO import StringIO

data = """
  0.00 ,   0.0658
100.00 ,   0.4692
200.00 ,   1.4577
300.00 ,   3.0489
400.00 ,   5.1213
500.00 ,   7.5221
600.00 ,  10.1170"""

celcius,y_data = loadtxt(StringIO(data), delimiter=",",unpack=True)   

#converting celcius to kelvin
kelvin = celcius + 273.15

#creating labels
xlabel("1/T (K)")                       
ylabel("Reaction Rate")

#plotting...
plot(1/kelvin, y_data) 

#making the y-axis logarythmic
semilogy()

grid()
show()

或者,您可以使用非锯齿状数组。它可能适合您的需要。

{{1}}

可以这样访问:

{{1}}

答案 1 :(得分:0)

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

   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++;

        }

正在读取的文件是一个简单的模拟数据库,设置为一个自动生成的平面文件,用于测试我正在实现的算法,该算法适用于锯齿状数组;因此,我不是使用数据库,而是为了易于使用而增加和减小尺寸。

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

随机技能_id;

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级但是有效:)