我有以下代码
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个任何建议吗?
答案 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]];