如何在Java中使用循环在3D数组中添加元素?
我知道如何在2D数组中添加元素,但由于某种原因,我的3d数组无法工作,我做错了吗如何在Java中使用循环在3D数组中添加元素?,java,arrays,Java,Arrays,我知道如何在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; } } } for(i
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;
}
}
}
for(int i=0;i
我的数组如下:myArray=newint[COLUMNS][ROWS][IN];是这样吗?因为它应该像数组={1,2,3},{4,5,6},{7,8,9} 如果这是你的数组:{{1,2,3},{4,5,6},{7,8,9},那么你不需要3D数组,只需要2D数组 上述数组(您提供的)的元素包括: 相应地调整代码,您将得到:
for (int i = 0; i < ROWS; i++){
for (int j = 0; j < COLUMNS; j++){
myArray[i][j] = i + 10;
}
}
我们声明我们的3D阵列,正如您所说:
int[][][] my3dArray = new int[rows][columns][layers];
然后我们可以初始化这些值并开始使用数组,就像您开始使用的一样,只是这次我们不会引用变量行和列
相反,这次我们将引用数组的长度。这使我们的代码更加灵活。另一个程序/类可以制作一个3d数组并将其发送给我们的程序,尽管我们事先不知道它们的网格大小(就像我们对我们的网格所做的那样),它仍然可以正常工作
for(int i=0;i
如果这是你的数组:{{1,2,3},{4,5,6},{7,8,9},那么你不需要三维数组,只需要二维数组
上述数组(您提供的)的元素包括:
相应地调整代码,您将得到:
for (int i = 0; i < ROWS; i++){
for (int j = 0; j < COLUMNS; j++){
myArray[i][j] = i + 10;
}
}
我们声明我们的3D阵列,正如您所说:
int[][][] my3dArray = new int[rows][columns][layers];
然后我们可以初始化这些值并开始使用数组,就像您开始使用的一样,只是这次我们不会引用变量行和列
相反,这次我们将引用数组的长度。这使我们的代码更加灵活。另一个程序/类可以制作一个3d数组并将其发送给我们的程序,即使我们事先不知道它们的网格大小(就像我们使用我们的程序一样),它仍然可以正常工作
for(int i=0;i
你为什么不引用这个?
我希望这能帮你解决麻烦。你为什么不把这件事提出来?
我希望这将帮助您解决问题。这是您的代码,在for循环中切换了“列”和“行”,并正确分配了值
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;
}
}
}
...
publicstaticint[]myArray=newint[];
公共静态final int行=8,列=10,IN=3;
公众锻炼三{
myArray=newint[ROWS][COLUMNS][IN];
对于(int i=0;i
打印3d数组时也有错误。您应该从
切换循环条件这是您的代码,在循环中切换“列”和“行”,并正确分配值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;
}
}
}
...
publicstaticint[]myArray=newint[];
公共静态final int行=8,列=10,IN=3;
公众锻炼三{
myArray=newint[ROWS][COLUMNS][IN];
对于(int i=0;i
打印3d数组时也有错误。您应该从切换循环条件,这与创建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;
}
}
}
//创建三维阵列
int[]myArray=newint[r][c][n];
对于(int i=0;i而言,它与创建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;
}
}
}
//创建三维阵列
int[]myArray=newint[r][c][n];
对于(int i=0;i为什么您的k循环从1开始,而不是像其他循环一样从0开始?怎么了?提供更多详细信息、更多代码或解释发生了什么?@DM,因为我希望添加的第一个元素是1@Piotrowy就像我在线程“main”中得到的输出{0,10,10异常一样java.lang.ArrayIndexOutOfBoundsException:3在ExerciseThree.printArrayStatement(ExerciseThree.java:117)在ExerciseOne.main(ExerciseOne.java:12)myArray=new int[COLUMNS][ROWS][IN]
-如果这是您的声明,那么i
可能会转到列
,j
可能会转到行
。为什么您的k循环像其他循环一样从1开始而不是0?有什么不对?提供更多细节、更多代码或解释发生了什么?DM因为我希望添加的第一个元素是1@Pi或者像我一样,在线程“main”java.lang.ArrayIndexOutOfBoundsException:3在ExerciseThree.printArrayStatement(ExerciseThree.java:117)在ExerciseOne.main(ExerciseOne.java:12)myArray=new int[COLUMNS][ROWS][in]中得到这个输出{0,10,10异常
-如果这是您的声明,那么i
可能会进入列
,j
可能会进入行
@C.Ikongo full answer here。您可以将此答案标记为正确答案。@C.Ikongo full answer here。您可以将此答案标记为正确答案。我明白了,我已经添加到了我的原始答案中,我想这可能就是你想要的。如果有帮助,请告诉我!谢谢你的帮助:)我明白了,我已经添加到我的原始答案中,我想这可能就是你想要的。如果有帮助,请告诉我!谢谢你的帮助:)