如何填写一个三维阵列 [英] How to fill a three dimensional array
本文介绍了如何填写一个三维阵列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我要填写一个三维阵列具有以下数组:
双击[] = 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屋!
查看全文