将随机值3D数组分配给类的数组

时间:2016-10-05 14:14:49

标签: 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];
    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 - 对象的数组:

CCTest[] cls = new CCTest[5];

如何为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);
    }

结果应具有以下结构:

X(:,:,1) =

0.8909    0.5472
0.9593    0.1386

X(:,:,2) =

0.1493    0.8407
0.2575    0.2543

但是代码没有产生它。有人可以指导我找到解决方案吗?

1 个答案:

答案 0 :(得分:0)

问题是你还没有制作任何CCTest - 实例。

因此,在您CCTest[] cls = new CCTest[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);
    }
}

或者,您可以先创建它们,然后执行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);
    }
}