在java中初始化多维数组

在java中初始化多维数组,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我试图在java中为多维数组分配特定的动态值。以下是我试图解决的两个步骤。有没有简单直接的方法 我正在尝试使用这个代码 while (recrdcntrx<numberofrecords) { mobilephonerecords[recrdcntrx][recrdcntrx][recrdcntrx][recrdcntrx]= {mobilenumbercntrx,unsortedmobilenumbers[m

我试图在java中为多维数组分配特定的动态值。以下是我试图解决的两个步骤。有没有简单直接的方法

我正在尝试使用这个代码

            while (recrdcntrx<numberofrecords)
            {
                mobilephonerecords[recrdcntrx][recrdcntrx][recrdcntrx][recrdcntrx]= {mobilenumbercntrx,unsortedmobilenumbers[mobilenumbercntrx],arraystart[mobilenumbercntrx],arrayend[mobilenumbercntrx]};
                mobilenumbercntrx=mobilenumbercntrx+1;
                recrdcntrx=recrdcntrx+1;
            }
我找到了初始化它们的方法,但当我尝试下一步时,它抛出了一个编译时错误——“数组常量只能在初始化器中使用”

我们必须分配这些动态值-arrcntr1、未排序的移动号码[arrcntr1]、arraystart[arrcntr1]、arrayend[arrcntr1]

我尝试了解决方法,但没有分配号码- 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 将mobilephonerecords打印为阵列-[[[[J@55f96302 将mobilephonerecords打印为阵列-[[[[J@55f96302

新长[100][100][100][100]将使用默认长值0初始化数组。您可以通过检查数组中的随机索引来查看它:

long[][][][] arr = new long[100][100][100][100];
System.out.println(arr[30][21][33][17]); // 0
无需使用Arrays.fill自己初始化数组,如下所示:

创建§15.9、§15.10时,每个类变量、实例变量或数组组件都会使用默认值初始化:


嗯……好的,但第二步更重要。你能给出你有价值的意见吗?@Saifhmed你的第二步很不清楚,请更新问题来解释你在做什么。我已经编辑了这个问题。请检查。旁注:对于带有计数器的循环使用for循环会更习惯,这限制了范围循环体的计数器。什么是动态值?您会得到什么错误?我想您需要阅读侧注2:还有一个后增量运算符,它可以用来以较少的重复写入增量:arrcntr1=arrcntr1+1;可以写为arrcntr1++;错误消息是“只能使用数组常量”在initializers'中,但您在向我们展示的任何代码中都没有使用数组常量。错误一定在其他地方。请检查错误消息中报告的行号。mobilephonerecords[recrdcntrx][recrdcntrx][recrdcntrx][recrdcntrx][recrdcntrx]不是数组,而是长数组。为什么要尝试将数组分配到该位置?
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;
}
long[][][][] arr = new long[100][100][100][100];
System.out.println(arr[30][21][33][17]); // 0