【问题标题】:Printing A class with 3D Array field打印具有 3D Array 字段的类
【发布时间】:2017-02-14 21:11:42
【问题描述】:

我有一门课是:

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

但输出为空 [] ,请提供任何想法

【问题讨论】:

  • this.c、this.D、this.Size的值是多少
  • @Thusitha : this.c=2; this.D=2,例如 ; this.size=10
  • 能否请您将 getRandomX() 中的代码显示为初始化数组的内容

标签: java arrays class


【解决方案1】:

您的 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

【讨论】:

  • @Nyakiba 有很大不同,因为它提供了正确的 getRandom3DArray 函数。他那里有一个错误。
  • @xenteros 我添加了随机生成方法,我将参数添加到方法中:cls[i].x = getRandomX(this.c, this.D, this.Size);,它们正在改变
【解决方案2】:

内部循环: for (int j = 0; j

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    • 2020-03-15
    相关资源
    最近更新 更多