我正在尝试为Java中的多维数组分配特定的动态值。这些是我正在尝试解决的2个步骤。有没有简单的直接方法。
我正在尝试使用此代码
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 mobilephonerecords [] [] [] [] -0 将手机记录打印为数组-[[[[J @ 55f96302 将手机记录打印为数组[[[[[J @ 55f96302
答案 0 :(得分:1)
new long[100][100][100][100]
将使用默认的long
值0
初始化数组。您可以通过检查数组中的随机索引来查看它:
long[][][][] arr = new long[100][100][100][100];
System.out.println(arr[30][21][33][17]); // 0
根据JLS 4.12.5. Initial Values of Variables,无需使用Arrays.fill()
自己初始化数组:
每个类变量,实例变量或数组组件在创建时都会用默认值初始化(第15.9节,第15.10节):