#java #arrays #class
#java #массивы #класс
Вопрос:
У меня есть класс, который :
public class CCTest {
public double f;
public double[][][] x;
public double counter;
};
и я присвоил случайное число x,
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);
}
}
затем я попытался отобразить результат с помощью :
public static void display(double[][][] array) {
int rows = array.length;
int columns = array[0].length;
int depth = array[0][0].length;
for (int d = 0; d < depth; d ) {
for (int r = 0; r < rows; r ) {
for (int c = 0; c < columns; c ) {
System.out.print(array[r][c][d] " ");
}
System.out.println();
}
System.out.println();
}
}
Метод случайной генерации :
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();
}
}
}
return resu<
}
но вывод пустой [], любая идея, пожалуйста
Комментарии:
1. каковы значения this.c, this.D, this.Size
2. @ Thusitha : this.c=2; это. D= 2, и, например; This.size=10
3. Не могли бы вы, пожалуйста, показать код в getRandomX() в качестве его инициализации массива
Ответ №1:
Внутренний цикл: for (int j = 0; j < this.D; j ) {…} бесполезен, поэтому вы можете удалить это.Функции display и getRandomX() работают нормально. Попробуйте это в main, работает в моей среде:
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[c][D][S];
cls[i].x = getRandomX(c, D, S);
}
for (int i = 0; i < (Size = 5); i ) {
display(cls[0].x);
}
Ответ №2:
Ваш display
метод должен выглядеть следующим образом:
public static void display(double[][][] array) {
for (int x = 0; x < array.length; x ) {
for (int y = 0; y < array[x].length; y ) {
for (int z = 0; z < array[x][y].length; z ) {
System.out.println(array[x][y][z]);
}
}
}
}
Мне приходит в голову еще один вопрос. Что такое getRandomX? Вы нам не показали. Я бы использовал следующее:
public static double[][][] getRandom3DArray(double[][][] array) {
Random r = new Random();
for (int x = 0; x < array.length; x ) {
for (int y = 0; y < array[x].length; y ) {
for (int z = 0; z < array[x][y].length; z ) {
array[x][y][z] = r.nextDouble();
}
}
}
return array;
}
Вы ошибаетесь rows
с depth
отображением.
Комментарии:
1. @Nyakiba это сильно отличается, поскольку оно дает правильную
getRandom3DArray
функцию. У него там ошибка.2. @xenteros я добавляю метод случайной генерации , я добавляю аргумент к методу :
cls[i].x = getRandomX(this.c, this.D, this.Size);
, и они меняются