我有一个包含三个字段的课程:
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
但是代码没有产生它。有人可以指导我找到解决方案吗?
答案 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);
}
}