好吧,我想找到特定行和列的辅因子
假设我有一个矩阵:
1 2 3
4 5 6
7 8 9
我想要这个职位的副手 0,0
结果是:
5 6
8 9
但是,我的代码总是生成一个 0
取决于我对值的处理
i , k n , m
(注意下面的代码)
此代码生成以下矩阵:
5 0
8 9
顺便说一句,我从bluej得到了结果矩阵,我将在原始代码下面留下一个简单的打印矩阵代码中的所有元素,以防您不想使用debuger
代码如下:
public int[][] adjointMatrix(int matrixRow, int matrixColumn, int[][] matrix)
throws ArrayIndexOutOfBoundsException {
if (matrixColumn >= matrix.length || matrixRow >= matrix[0].length) {
throw new ArrayIndexOutOfBoundsException();
}
int[][] Adjoint = new int[matrix.length - 1][matrix[0].length - 1];
int m = 0;
int n = 0;
for (int i = 0; i < matrix.length; i++) {
if (i == matrixRow) {
continue;
}
for (int k = 0; k < matrix[i].length; k++) {
if (k == matrixColumn) {
continue;
}
Adjoint[m][n] = matrix[k][i];
if (m < Adjoint.length - 1) {
m++;
}
}
if (n < Adjoint[0].length - 1) {
n++;
}
}
return Adjoint;
}
adjointMatrix(0, 0, new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}});
打印整个矩阵:
// print it somewhere in a class
for (int i = 0; i < matrixname.length; i++) {
for (int k = 0; k < matrixname[0].length; k++) {
System.out.print(matrixname[i][k] + " ");
}
System.out.println();
}
2条答案
按热度按时间eivgtgni1#
你可以用
IntStream
迭代这个矩阵的索引,filter
输出指定的行和列并返回辅因子矩阵:jrcvhitl2#
应该是的
Adjoint[m][n] = matrix[i][k]
而不是Adjoint[m][n] = matrix[k][i]
.i
是行索引计数器k
是列索引计数器。此外,您还需要在以下情况下将行切换到下一行:
n
位于相应行的末尾。那你就从m
作为m + 1
以及n
作为0
.这是你的固定电话
adjointMatrix()
函数段:但是,您可以用更简单的方法编写for循环部分,方法如下: