我正在尝试对矩阵条目进行排序,我首先将它们放入数组
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
你可以帮我解决这个问题吗?
非常感谢。
答案 0 :(得分:0)
问题是你混淆了你的尺寸,并试图将6元素矢量复制到3x2矩阵而不是2x3矩阵。
您可以告诉,因为当您从矩阵中复制值时,i
会从0
变为A.length
。将其复制回来后,i
会从0
转到A[0].length
(= vektori_per_sortim.length/A.length
)。
您可以切换i
和j
条件,但只需使用第一个循环并反转其中的副本就会更简洁:
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++;
}
}