我正在尝试使用一些对象初始化二维数组。我希望第二个“维度”具有不同大小的数组,例如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);
}
但是它不起作用,我现在又有其他想法可以实现。
答案 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));
}
}
}