【发布时间】:2019-01-09 10:53:59
【问题描述】:
我试图将特定的动态值分配给 java 中的多维数组。这些是我尝试解决的两个步骤。有没有简单直接的方法。
我正在尝试使用此代码
while (recrdcntrx<numberofrecords)
{
mobilephonerecords[recrdcntrx][recrdcntrx][recrdcntrx][recrdcntrx]= {mobilenumbercntrx,unsortedmobilenumbers[mobilenumbercntrx],arraystart[mobilenumbercntrx],arrayend[mobilenumbercntrx]};
mobilenumbercntrx=mobilenumbercntrx+1;
recrdcntrx=recrdcntrx+1;
}
但它不起作用。所以我尝试了一种解决方法。
A.初始化
long mobilephonerecords[][][][]= new long[100][100][100][100];
for (long[][][] row: mobilephonerecords) {
for (long[][] innerRow: row) {
for (long[] innerInnerRow: innerRow) {
Arrays.fill(innerInnerRow, 0);
}
}
};
我找到了初始化它们的方法,但是当我尝试下一步时,它会引发编译时错误 - '数组常量只能在初始化器中使用'
我们必须分配这些动态值 - arrcntr1, unsortedmobilenumbers[arrcntr1],arraystart[arrcntr1],arrayend[arrcntr1]
int xcntr=0;
int arrcntr1=0;
long temp1=0;
int arrcntr2=0;
long temp2=0;
int arrcntr3=0;
long temp3=0;
int arrcntr4=0;
long temp4=0;
while(xcntr<recrdcntr)
{
temp1=arrayend[arrcntr1];
mobilephonerecords[0][0][0][arrcntr1] = temp1;
arrcntr1=arrcntr1+1;
xcntr=xcntr+1;
}
int ycntr=0;
while(ycntr<recrdcntr)
{
temp2=arraystart[arrcntr2];
mobilephonerecords[0][0][arrcntr2][0] = temp2;
arrcntr2=arrcntr2+1;
ycntr=ycntr+1;
}
int zcntr=0;
while(zcntr<recrdcntr)
{
temp3=unsortedmobilenumbers[arrcntr3];
mobilephonerecords[0][arrcntr3][0][0] = temp3;
arrcntr3=arrcntr3+1;
zcntr=zcntr+1;
}
int icntr=0;
while(icntr<recrdcntr)
{
temp4=icntr;
mobilephonerecords[arrcntr4][0][0][0] = temp4;
arrcntr4=arrcntr4+1;
icntr=icntr+1;
}
-
我尝试了解决方法,但没有分配数字 - 3. 我尝试了解决方法,但数字没有分配给 mobilephonerecords 4d 数组。
while (recrdcntrx<numberofrecords) { System.out.println("mobilephonerecords[][][][] -"+mobilephonerecords[recrdcntrx][recrdcntrx][recrdcntrx][recrdcntrx]); mobilenumbercntrx=mobilenumbercntrx+1; recrdcntrx=recrdcntrx+1; } recrdcntrx=0; while (recrdcntrx<numberofrecords) { System.out.println("print mobilephonerecords as array-"+mobilephonerecords); mobilenumbercntrx=mobilenumbercntrx+1; recrdcntrx=recrdcntrx+1; }- 输出
mobilephonerecords[][][][] -0 手机记录[][][][] -0 将手机记录打印为数组-[[[[J@55f96302 将手机记录打印为数组-[[[[J@55f96302
【问题讨论】:
-
旁注:将
for-loop 用于带有计数器的循环会更惯用,这会将计数器的范围限制为循环体。 -
什么是“动态值”,您会遇到什么错误?我认为您需要阅读MCVE
-
旁注2:还有后自增运算符,可以用来写重复较少的增量:
arrcntr1=arrcntr1+1;可以写成arrcntr1++; -
您的错误消息是“数组常量只能在初始化程序中使用”,但您在向我们展示的任何代码中都没有使用数组常量。错误必须在其他地方。检查错误消息中报告的行号。
-
mobilephonerecords[recrdcntrx][recrdcntrx][recrdcntrx][recrdcntrx]不是一个数组,它是一个long。你为什么要给那个位置分配一个数组?
标签: java arrays multidimensional-array