如何将2d数组分配给1D数组?

时间:2015-10-07 07:04:01

标签: java arrays

我正在使用apache commons-math库来计算回归参数。如图2和3所示,将2d阵列分配给单个阵列。当我使用相同的代码时,

我收到错误:

  

“类型不匹配错误:无法从double [] []转换为double []”in   第3行但不是第2行。

OLSMultipleLinearRegression regression = new OLSMultipleLinearRegression();
double[] y = new double[]{11.0, 12.0, 13.0, 14.0, 15.0, 16.0};
double[] x = new double[6][];
x[0] = new double[]{0, 0, 0, 0, 0};
x[1] = new double[]{2.0, 0, 0, 0, 0};
x[2] = new double[]{0, 3.0, 0, 0, 0};
x[3] = new double[]{0, 0, 4.0, 0, 0};
x[4] = new double[]{0, 0, 0, 5.0, 0};
x[5] = new double[]{0, 0, 0, 0, 6.0};          
regression.newSample(y, x);

为什么会这样?以及它是如何工作的?

More details on OLS regression are given here

1 个答案:

答案 0 :(得分:1)

案例1:

   double[] y = new double[]{11.0, 12.0, 13.0, 14.0, 15.0, 16.0};

您正在创建一维数组,其值立即插入。工作正常

案例2:

double[] x = new double[6][];

您正在声明一维数组并尝试分配二维数组。这是非法的。

将声明更改为2D或使用1D初始化

有效声明将是

double[] x = new double[6];  // 1D

double[][] x = new double[6][lenghtYouWant]; //2D

稍后看到插入后,您需要一个2D数组。要成功编译以下代码,您需要将注册更改为

double[][] x = new double[6][];