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);
}
}