以动态方式创建数组java

时间:2015-02-02 07:36:11

标签: java arrays eclipse dynamic

我有以下代码

 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定义为具有等于&#34; Num_Alt_Decision_variable&#34;中的最大数量的列数。阵列。但我不认为这是一个很好的做法,因为&#34; Num_Alt_Decision_variable&#34;数组范围从1到20因此我需要为每个&#34; Number_Decision_Variables&#34;定义一个单独的1-d数组。大小等于&#34; Num_Alt_Decision_variable&#34;中每个单元格的值。例如,如果Num_Alt_Decision_variable [1] = 1,那么第一个数组的大小应该为1,如果Num_Alt_Decision_variable [2] = 10,那么第二个数组的大小应该是10个任何建议吗?

1 个答案:

答案 0 :(得分:0)

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

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]];