Java数组索引超出限制例外2

时间:2014-05-06 16:31:07

标签: java arrays indexoutofboundsexception

我正在尝试对矩阵条目进行排序,我首先将它们放入数组

 double[][] A ={{0,70,9},{1,3,4}};

    double[] vektori_per_sortim=new double[A.length*A[0].length];

    int k=0;

    for(int i=0; i!=A.length; i++)
    {
        for(int j=0; j!=A[0].length; j++)
        {
            vektori_per_sortim[k]=A[i][j];
            k++;
        }

    }

然后我试着再将它们放入矩阵中

int r=0;
  while(r!=vektori_per_sortim.length)
{
    for(int i=0; i!=vektori_per_sortim.length/A.length; i++)
     {
       for(int j=0; j!=vektori_per_sortim.length/A[0].length; j++)
       {
          A[i][j]=vektori_per_sortim[r];
          r++; 

        }

      }


}

但是我收到了错误 java.lang.ArrayIndexOutOfBoundsException:2

你可以帮我解决这个问题吗?

非常感谢。

2 个答案:

答案 0 :(得分:0)

问题是你混淆了你的尺寸,并试图将6元素矢量复制到3x2矩阵而不是2x3矩阵。

您可以告诉,因为当您从矩阵中复制值时,i会从0变为A.length。将其复制回来后,i会从0转到A[0].length(= vektori_per_sortim.length/A.length)。

您可以切换ij条件,但只需使用第一个循环并反转其中的副本就会更简洁:

k=0;
for(int i=0; i!=A.length; i++)
{
    for(int j=0; j!=A[0].length; j++)
    {
        A[i][j] = vektori_per_sortim[k];
        k++;
    }

}

答案 1 :(得分:0)

您可能需要一种不同的方法将值放回矩阵中。我建议以与将它们放入数组相同的方式迭代元素,但这次以其他方式复制它们。尝试用以下代码替换第二个代码块:

int r = 0;
for(int i=0; i!=A.length; i++)
{
    for(int j=0; j!=A[0].length; j++)
    {
        A[i][j] = vektori_per_sortim[r];
        r++;
    }

}