Java 将随机值3D数组指定给类的数组

Java 将随机值3D数组指定给类的数组,java,arrays,class,Java,Arrays,Class,我有一个包含三个字段的类: public class CCTest { public double f; public double[][][] x; public double counter; } 我试图给它分配一个随机数。我有以下生成随机数据的方法: public static double[][][] getRandomX(int x, int y, int z) { double[][][] result = new double[x][y][z];

我有一个包含三个字段的类:

public class CCTest {
    public double f;
    public double[][][] x;
    public double counter;
}
我试图给它分配一个随机数。我有以下生成随机数据的方法:

public static double[][][] getRandomX(int x, int y, int z) {
    double[][][] result = new double[x][y][z];
    Random r = new Random();

    for (int i = 0; i < z; i++) {
        for (int j = 0; j < y; j++) {
            for (int k = 0; k < x; k++) {
                result[k][j][i] = r.nextDouble();
             }
        }
    }
    // System.out.println(Arrays.deepToString(result));
    return result;
 }
如何为5个
CCTest
-对象中的每一个分配一个随机数?
我试过这个:

for (int i = 0; i < Size =5; i++) {  
    cls[i].x = new double[this.c][this.D][this.Size];
    for (int j = 0; j < this.D; j++) {
        cls[i].X= getRandomX(this.c, this.D, this.Size);
    }

但代码并没有产生它。有谁能给我介绍一个解决方案吗?

问题是您没有做任何
CCTest
-实例

因此,在您进行
CCTest[]cls=newcctest[5]之后五个
CCTest
-对象为
null
。如果它们还不存在,您应该创建它们:

CCTest[] cls = new CCTest[5];

for (int i = 0; i < (Size = 5); i++) {
    // We create a new CCTest-instance if it doesn't exist yet:
    if(cls[i] == null){
        cls[i] = new CCTest();
    }

    cls[i].x = new double[this.c][this.D][this.Size];
    for (int j = 0; j < this.D; j++) {
        cls[i].x = getRandomX(this.c, this.D, this.Size);
    }
}
CCTest[]cls=新的CCTest[5];
对于(int i=0;i<(Size=5);i++){
//如果CCTest实例尚不存在,我们将创建一个新的CCTest实例:
if(cls[i]==null){
cls[i]=新的CCTest();
}
cls[i].x=newdouble[this.c][this.D][this.Size];
for(int j=0;j
或者,您可以先创建它们,然后执行for循环以分配随机双精度:

CCTest[] cls = new CCTest[5];
for (int i = 0; i < cls.length; i++) {
    cls[i] = new CCTest();
}

for (int i = 0; i < (Size = 5); i++) {
    cls[i].x = new double[this.c][this.D][this.Size];
    for (int j = 0; j < this.D; j++) {
        cls[i].x = getRandomX(this.c, this.D, this.Size);
    }
}
CCTest[]cls=新的CCTest[5];
对于(int i=0;i
您当前的结果是什么?@chris结果为空如果您的3dprint方法中出现indexoutofboundsexception,那么您应该将其代码放入问题中,以便我们进行调试。@chris我无法将代码以正确的格式放入注释框中,请您解释一下我该怎么做。我使用了(`),但不起作用。请将代码放在两个`mark之间。例如,在此处插入代码。或者,如果您不能这样做,请按问题底部的“编辑”按钮编辑您的问题。我使用了3D打印方法,但我收到的错误是:IndexAutofBound:3Dprint(cls[I].x)
CCTest[] cls = new CCTest[5];

for (int i = 0; i < (Size = 5); i++) {
    // We create a new CCTest-instance if it doesn't exist yet:
    if(cls[i] == null){
        cls[i] = new CCTest();
    }

    cls[i].x = new double[this.c][this.D][this.Size];
    for (int j = 0; j < this.D; j++) {
        cls[i].x = getRandomX(this.c, this.D, this.Size);
    }
}
CCTest[] cls = new CCTest[5];
for (int i = 0; i < cls.length; i++) {
    cls[i] = new CCTest();
}

for (int i = 0; i < (Size = 5); i++) {
    cls[i].x = new double[this.c][this.D][this.Size];
    for (int j = 0; j < this.D; j++) {
        cls[i].x = getRandomX(this.c, this.D, this.Size);
    }
}