我尝试创建一个带有2个for循环的3d数组。但如果我检查我的Z组件,我的控制台将给我2个值。
为什么呢?我能改变什么?
通常我会使用List<Tuple<,,>>
,但我想创建一个3D矩阵,所以我认为float [,,]更好转换。
你知道怎么做吗?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media.Media3D;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
float[,,] A = new float[40, 48,40*48];
List<Tuple<int,int,float>> P = new List<Tuple<int, int, float>>();
var Zvalue = new float[40*48];
int i = 0;
Random R = new Random();
for(int y = 0; y <= 47; y++)
{
for (int x = 0; x <= 39; x++)
{
Zvalue[i] = R.Next(0, 10);
//P[x, y, i] = { { { (x,y,Z[x,y]) } } };
P.Add(Tuple.Create(x, y, Zvalue[i]));
A[x,y,i] = Zvalue[i];
Console.WriteLine(A[x,y,i]);
Console.Read();
i++;
}
}
}
}
}
控制台输出:
评论之后,我理解如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media.Media3D;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
float[,,] A = new float[40, 48, 120];
List<Tuple<int, int, float>> P = new List<Tuple<int, int, float>>();
var Zvalue = new float[40 * 48 * 120];
int i = 0;
Random R = new Random();
for (int y = 0; y <= 47; y++)
{
for (int x = 0; x <= 39; x++)
{
for (int z = 0; z < 120; z++)
{
Zvalue[i] = R.Next(0, 10);
//P[x, y, i] = { { { (x,y,Z[x,y]) } } };
P.Add(Tuple.Create(x, y, Zvalue[i]));
A[x, y, z] = Zvalue[i];
Console.WriteLine(A[x, y, z]);
Console.Read();
i++;
}
}
}
}
}
}
假设对于每个x,y位置,将有120个可能的Z位置。这是对的吗 ?我也可以使用这个float[,,] A
进行矩阵计算吗?
但是我不明白为什么Console.Read()
会得到2个字符?
好的,这是不正确的,因为0,0,0的随机值直到0,0,119,但就是这样。例如,对于0,1,0,该值为0.如何修复它?