如何填写一个三维阵列 [英] How to fill a three dimensional array

查看:106
本文介绍了如何填写一个三维阵列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要填写一个三维阵列具有以下数组:

 双击[] = Y11新的双[7] {24,13.3,12.2,14,22.2,16.1,27.9};
双[] = Y12新的双[7] {3.5,3.5,4,4,3.6,4.3,5.2};双[] = Y21新的双[7] {7.4,13.2,8.5,10.1,9.3,8.5,4.3};
双[] Y22 =新双[7] {3.5,3,3,3,2,2.5,1.5};双[] = Y31新的双[5] {16.4,24,53,32.7,42.8};
双[] = Y32新的双[5] {3.2,2.5,1.5,2.6,2};双[] = Y41新的双[2] {25.1,5.9};
双[] = Y42新的双[2] {2.7,2.3};

例如 Y12 表示在第1组,列号2等的阵列。所以我有4个组,每组有2列。

 公共类矩阵
{
    双[,]矩阵;
    公共无效初始(INT GROUPSIZE,诠释columnSize,诠释valueSize)
    {
        矩阵=新的双[GROUPSIZE,columnSize,valueSize]
    }
}

我需要一个简单灵活的Add方法的矩阵,而不是分配如的每个值矩阵[1] [2] [3] =值;

我试过这个,但无法得到它的工作。

 公共无效添加(双[] columnArray,诠释对groupIndex,INT参数:columnIndex)
{
    矩阵[I,Y] = columnArray;
}


解决方案

据@Henk Holterman的评论(谢谢),我已经成功地解决这个问题。

 公共类矩阵
{
    双[] []矩阵;
    公共矩阵(INT GROUPSIZE,诠释columnSize)
    {
        矩阵=新的双[GROUPSIZE,columnSize] [];
    }
    公共无效添加(双[]编曲,诠释对groupIndex,INT参数:columnIndex)
    {
        矩阵[groupIndex处,参数:columnIndex] =编曲;
    }
    公共无效打印()
    {
        INT参数:columnIndex = 0;
        INT对groupIndex = 0;
        INT GROUPSIZE = matrix.GetLength(0);
        INT columnSize = matrix.GetLength(1);
        而(对groupIndex< GROUPSIZE)
        {
            对于(INT K = 0; K<矩阵[groupIndex处,参数:columnIndex]。长度; k ++)
            {
                Console.Write(对groupIndex + 1);
                而(参数:columnIndex< columnSize)
                {
                    Console.Write({0},矩阵[groupIndex处,参数:columnIndex] [K]);
                    参数:columnIndex ++;
                }
                Console.WriteLine();
                参数:columnIndex = 0;
            }
            对groupIndex ++;
        }
    }}

主类

 静态矩阵m;
    静态无效SetDataSet()
    {
        双[] = Y11新的双[7] {24,13.3,12.2,14,22.2,16.1,27.9};
        双[] = Y12新的双[7] {3.5,3.5,4,4,3.6,4.3,5.2};        双[] = Y21新的双[7] {7.4,13.2,8.5,10.1,9.3,8.5,4.3};
        双[] Y22 =新双[7] {3.5,3,3,3,2,2.5,1.5};        双[] = Y31新的双[5] {16.4,24,53,32.7,42.8};
        双[] = Y32新的双[5] {3.2,2.5,1.5,2.6,2};        双[] = Y41新的双[2] {25.1,5.9};
        双[] = Y42新的双[2] {2.7,2.3};        m.Add(Y11,0,0);
        m.Add(Y12,0,1);
        m.Add(Y21,1,0);
        m.Add(Y22,1,1);
        m.Add(Y31,2,0);
        m.Add(Y32,2,1);
        m.Add(Y41,3,0);
        m.Add(Y42,3,1);
    }
    静态无效的主要(字串[] args)
    {
        M =新的Matrix(4,2);
        SetDataSet();
        m.Print();
        到Console.ReadLine();
    }
}

I want to fill a three dimensional array with the following arrays:

double[] y11 = new double[7] { 24, 13.3, 12.2, 14, 22.2, 16.1, 27.9 };
double[] y12 = new double[7] { 3.5, 3.5, 4, 4, 3.6, 4.3, 5.2 };

double[] y21 = new double[7] { 7.4, 13.2, 8.5, 10.1, 9.3, 8.5, 4.3 };
double[] y22 = new double[7] { 3.5, 3, 3, 3, 2, 2.5, 1.5 };

double[] y31 = new double[5] { 16.4, 24, 53, 32.7, 42.8 };
double[] y32 = new double[5] { 3.2, 2.5, 1.5, 2.6, 2 };

double[] y41 = new double[2] { 25.1, 5.9 };
double[] y42 = new double[2] { 2.7, 2.3 };

for instance y12 means the array in group 1 , column number 2 and so on. so i have 4 groups ,each group has 2 columns.

public class Matrix
{
    double[, ,] matrix;
    public void Initial(int groupSize, int columnSize, int valueSize)
    {
        matrix = new double[groupSize, columnSize, valueSize];
    }
}

I need a simple flexible Add method for the matrix, rather than assigning each value like matrix[1][2][3] = value;

I've tried this, but couldn't get it work

public void Add(double[] columnArray, int groupIndex, int columnIndex)
{
    matrix[i, y] = columnArray;
}

解决方案

According to @Henk Holterman 's Comment (thank you), I've managed to solve the problem

public class Matrix
{
    double[,][] matrix;
    public Matrix(int groupSize, int columnSize)
    {
        matrix = new double[groupSize, columnSize][];
    }
    public void Add(double[] arr, int groupIndex, int columnIndex)
    {
        matrix[groupIndex, columnIndex] = arr;
    }
    public void Print()
    {
        int columnIndex = 0;
        int groupIndex = 0;
        int groupSize = matrix.GetLength(0);
        int columnSize = matrix.GetLength(1);
        while (groupIndex < groupSize)
        {
            for (int k = 0; k < matrix[groupIndex, columnIndex].Length; k++)
            {
                Console.Write(groupIndex + 1);
                while (columnIndex < columnSize)
                {
                    Console.Write("        {0}", matrix[groupIndex, columnIndex][k]);
                    columnIndex++;
                }
                Console.WriteLine();
                columnIndex = 0;
            }
            groupIndex++;
        }
    }

}

Main Class

    static Matrix m;
    static void SetDataSet()
    {
        double[] y11 = new double[7] { 24, 13.3, 12.2, 14, 22.2, 16.1, 27.9 };
        double[] y12 = new double[7] { 3.5, 3.5, 4, 4, 3.6, 4.3, 5.2 };

        double[] y21 = new double[7] { 7.4, 13.2, 8.5, 10.1, 9.3, 8.5, 4.3 };
        double[] y22 = new double[7] { 3.5, 3, 3, 3, 2, 2.5, 1.5 };

        double[] y31 = new double[5] { 16.4, 24, 53, 32.7, 42.8 };
        double[] y32 = new double[5] { 3.2, 2.5, 1.5, 2.6, 2 };

        double[] y41 = new double[2] { 25.1, 5.9 };
        double[] y42 = new double[2] { 2.7, 2.3 };

        m.Add(y11, 0, 0);
        m.Add(y12, 0, 1);
        m.Add(y21, 1, 0);
        m.Add(y22, 1, 1);
        m.Add(y31, 2, 0);
        m.Add(y32, 2, 1);
        m.Add(y41, 3, 0);
        m.Add(y42, 3, 1);
    }
    static void Main(string[] args)
    {
        m = new Matrix(4,2);
        SetDataSet();
        m.Print();
        Console.ReadLine();
    }
}

这篇关于如何填写一个三维阵列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆