以动态方式创建数组 java

create arrays in a dynamic manner java

我有以下代码

 int Number_Decision_Variables=State_Vector.nextInt();
        int max=0;
        int[] Num_Alt_Decision_variable=new int[Number_Decision_Variables];
        for(int Num=0;Num<Number_Decision_Variables;Num++){
            System.out.println("Enter the number of Alternatives for Decision Variable"+Num+1);
            Num_Alt_Decision_variable[Num]=State_Vector.nextInt();
            if(Num_Alt_Decision_variable[Num]>max)max=Num_Alt_Decision_variable[Num];
        }
        double[][] c=new double[Number_Decision_Variables][max];

我定义矩阵 c 的列数等于 "Num_Alt_Decision_variable" 数组中的最大列数。但我不认为这是一个好的做法,因为 "Num_Alt_Decision_variable" 数组中的单元格范围从 1 到 20 因此我需要为每个 "Number_Decision_Variables" 定义一个单独的一维数组,大小等于"Num_Alt_Decision_variable" 中每个单元格的值,例如,如果 Num_Alt_Decision_variable[1]=1,则第一个数组的大小应为 1,如果 Num_Alt_Decision_variable[2]=10,则第二个数组的大小也应为 1数组的大小应为 10,有什么建议吗?

您可以动态创建二维数组,每行具有不同的列数:

double[][] c=new double[Number_Decision_Variables][];
c[0] = new double[Num_Alt_Decision_variable[0]];
c[1] = new double[Num_Alt_Decision_variable[1]];
...

或者您可以使用循环来做同样的事情。

for (int i = 0; i < c.length; i++)
    c[i] = new double[Num_Alt_Decision_variable[i]];