Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
初始化二维数组(java)_Java_Arrays - Fatal编程技术网

初始化二维数组(java)

初始化二维数组(java),java,arrays,Java,Arrays,我正在尝试用一些对象初始化二维数组。我希望第二个“维”有不同大小的数组,例如不同的to幂。我的想法是以下代码: NodeMatrix=new BNode[n][]; for(int i=0;i<n;i++) { for(int j=0;j<Math.pow(2,i);j++) { NodeMatrix[i]=new BNode[(int)Math.pow(2,i)]; NodeMatrix[i][j]= new

我正在尝试用一些对象初始化二维数组。我希望第二个“维”有不同大小的数组,例如不同的to幂。我的想法是以下代码:

NodeMatrix=new BNode[n][];
    for(int i=0;i<n;i++) {
        for(int j=0;j<Math.pow(2,i);j++) {
            NodeMatrix[i]=new BNode[(int)Math.pow(2,i)];
            NodeMatrix[i][j]= new BNode(i);
        }
NodeMatrix=新的BNode[n][];

对于(inti=0;i基本上,它不能在java中实现。2D数组只是数组的数组

一个选项是使用数组列表

例如:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class JavaArrayListOfStringArray {

    public static void main(String[] args) {

        List <String[]> list = new ArrayList <String[]>();

        String [] arr1 = {"a","b","c"};
        String [] arr2 = {"1","2","3"};

        list.add(arr1);
        list.add(arr2);

        for(String[] arr : list) {
            System.out.println(Arrays.toString(arr));
        }
    }

}
import java.util.ArrayList;
导入java.util.array;
导入java.util.List;
公共类JavaArrayListOfStringArray{
公共静态void main(字符串[]args){
List=newarraylist();
字符串[]arr1={“a”、“b”、“c”};
字符串[]arr2={“1”、“2”、“3”};
列表。添加(arr1);
列表。添加(arr2);
for(字符串[]arr:list){
System.out.println(Arrays.toString(arr));
}
}
}

我没有完全理解您的需求。但是下面的代码可能会帮助您理解Java中的2D数组

public static void generateDynamicArray() {
        int[][] arr = new int[5][];

        for (int i = 0; i < arr.length; i++) {
            arr[i] = new int[(int)Math.pow(2, i)];
        }


        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                arr[i][j] = (int) (Math.random() * 10);
            }
        }


        for(int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j] +" ");
            }
            System.out.println();
        }
    }
publicstaticvoid-generateddynamicarray(){
int[]arr=新int[5][];
对于(int i=0;i
在迭代之前,必须初始化BNode数组。 作为一个建议,考虑一下,如果你真的想用两个幂来设置长度,那么它会增长得很快。
NodeMatrix=new BNode[n][];
for(int i=0;i<n;i++) {
    NodeMatrix[i]=new BNode[(int)Math.pow(2,i)];
    for(int j=0; j < NodeMatrix[i].length; j++) {  
        NodeMatrix[i][j]= new BNode(i);
    }
}
NodeMatrix=新的BNode[n][];

for(inti=0;iOkay!!编辑了答案。