我知道如何在2D数组中添加元素,但出于某种原因,我的3d数组不起作用我做错了吗?
for (int i = 0; i < ROWS; i++){
for (int j = 0; j < COLUMNS; j++){
for (int k = 1; k < IN; k++){
myArray [i][j][k] = i + 10;
}
}
}
我有这样的数组myArray = new int [COLUMNS] [ROWS] [IN];是对的吗?因为它应该像array = {{1,2,3},{4,5,6},{7,8,9}};
答案 0 :(得分:1)
如果这是你的阵列:{{1,2,3},{4,5,6},{7,8,9}},那么你不需要3D阵列,只需要2D阵列。
上面数组(您提供的)的元素是:
myArray[0][0] // 1 myArray[0][1] // 2 myArray[0][2] // 3
myArray[1][0] // 4 myArray[1][1] // 5 myArray[1][2] // 6
myArray[2][0] // 7 myArray[2][1] // 8 myArray[2][2] // 9
相应地调整代码:
for (int i = 0; i < ROWS; i++){
for (int j = 0; j < COLUMNS; j++){
myArray[i][j] = i + 10;
}
}
如果您要使用某些3D数据,则只需在当前代码上添加另一个维度即可。数组获得另一个维度,我们添加另一个[]
。 for循环得到另一个维度,我们添加另一个嵌套循环。
也许我们正在跟踪3D网格中的值,因此我们将尺寸定义为网格的大小,如下所示:
int rows = 3;
int columns = 4;
int layers = 5;
我们声明我们的3D阵列就像你说的那样:
int[][][] my3dArray = new int[rows][columns][layers];
然后我们可以初始化这些值并像开始一样开始使用我们的数组,只是这次我们不会引用变量行和列。
相反,这次我们将引用数组的长度。这使我们的代码更加灵活。另一个程序/类可以创建一个3d数组并将其发送到我们的程序,即使我们事先并不知道它们的网格大小(就像我们用它们做的那样),它仍然可以正常工作。
for (int i = 0; i < my3dArray.length; i++) {
for (int j = 0; j < my3dArray[0].length; j++) {
for (int k = 0; k < my3dArray[0][0].length; k++) {
// I randomly picked some formula
my3dArray[i][j][k] = i + j * 100 + k * 10000;
}
}
答案 1 :(得分:1)
与创建2D数组没有什么不同。
// creating 3D array
int[][][] myArray = new int[r][c][n];
for (int i=0; i<r; i++){
for (int j=0; j<c; j++){
for (int k=0; k<n; k++){
myArray[i][j][k] = i + 10;
}
}
}
答案 2 :(得分:0)
为什么不推荐这个answer? 我希望这会帮助你解决问题。
答案 3 :(得分:0)
这是你的代码,在for循环和正确的值赋值中切换了'COLUMNS'和'ROWS'i*10 + j + k*80;
public static int [][][] myArray = new int[][][];
public static final int ROWS = 8, COLUMNS = 10, IN = 3;
public ExerciseThree() {
myArray = new int [ROWS][COLUMNS][IN];
for (int i = 0; i < ROWS; i++){
for (int j = 0; j < COLUMNS; j++){
for (int k = 0; k < IN; k++){
myArray [i][j][k] = i*10 + j + k*80;
}
}
}
...
你也有打印3d阵列的错误。你应该在103和115行中将你的循环条件从<=
切换到<
。但这种方式更好:
for (int i = 0; i < ROWS; i++){
System.out.print("{");
for (int j = 0; j < COLUMNS; j++){
System.out.print("{");
for (int k = 0; k < IN; k++){
myArray [i][j][k] = i*10 + j + k*80;
if (k < IN - 1) {
System.out.print(",");
}
}
System.out.print("},");
}
System.out.print("},\n");
}