初始化二维数组(java)

时间:2018-11-14 14:54:48

标签: 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 BNode(i);
        }

但是它不起作用,我现在又有其他想法可以实现。

3 个答案:

答案 0 :(得分:0)

我不完全理解您的要求。但是下面的代码可以帮助您了解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();
        }
    }

答案 1 :(得分:0)

您必须在对其进行迭代之前初始化BNode数组。 作为建议,请考虑一下,如果您真的想将长度设置为2的幂,则长度会快速增长。

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);
    }
}

答案 2 :(得分:-1)

基本上,它不能用java完成。二维数组不过是数组数组而已。

一个选项可以使用数组列表。

示例:

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));
        }
    }

}