java - 如何使用嵌套 for 循环的输出值作为同一个 for 循环的新输入值?
问题描述
我想要一个 void 方法,它将 3 个数组作为输入,并将第一个输入分解为 l 和 r,它们也在方法参数中给出。
以下代码为我提供了想要的输出,但我想将其放入另一个 for 循环中,因此它也适用于 nxn - 矩阵。但我就是想不通。
//input values
double[][] a = new double[][] {{2,1,3,-5}, {-2,0,-2,3}, {4,4,10,15}, {-6,1,7,-}};
double[][] l = new double[][] {{1,0,0,0}, {0,1,0,0}, {0,0,1,0}, {0,0,0,}};
double[][] r = new double[][] {{0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0}};
public static void lrFactorization(double[][] a, double[][] l, double[][] r) {
double[][] array = a;
for (int i=1; i<array.length; i++) {
double tmp = array[i][0] / array[0][0];
for (int j=0; j<array[i].length; j++) {
array[i][j] = array[i][j] - (tmp * array[0][j]);
l[i][0] = tmp;
}
}
for (int i=2; i<array.length; i++) {
double tmp = array[i][1] / array[1][1];
for (int j=1; j<array[i].length; j++) {
array[i][j] = array[i][j] - (tmp * array[1][j]);
l[i][1] = tmp;
}
}
for (int i=3; i<array.length; i++) {
double tmp = array[i][2] / a[2][2];
for (int j=2; j<array[i].length; j++) {
array[i][j] = array[i][j] - (tmp * array[2][j]);
l[i][2] = tmp;
}
}
System.out.println(Arrays.deepToString(array));
System.out.println(Arrays.deepToString(l));
}
我想让它像这样工作:
for (int k=0; k<array.length; k++) {
for (int i=1; i<array.length; i++) {
double tmp = array[i][0] / array[0][0];
for (int j=0; j<array[i].length; j++) {
array[i][j] = array[i][j] - (tmp * array[0][j]);
l[i][0] = tmp;
}
}
我的另一个想法是我可以创建一个 3d 数组,我可以在其中保存 2d 数组(有点像 python 中的 .append() )但这似乎有点矫枉过正而且工作量太大,因为我很确定它应该与3x 嵌套 for 循环。
希望我的描述是可以理解的,有人可以帮助我。
提前致谢
解决方案
推荐阅读
- blender - Blender CTRL+R 在限制区域
- asp.net-core - 在不失去焦点的情况下访问输入值
- reactjs - 如何在 React 中将“功能组件”转换为“类组件”?
- c++ - Win32 在应用程序内使用资源字体
- html - html 表中的列周围的边框,某些行具有 collspan
- java - 我总共有 3 个测试用例,父类中有 2 个测试用例,子类中有 1 个测试用例,当我从头等舱运行脚本测试用例运行两次时
- angular - Angular 如何在 git 库的请求更改中提取更改?
- php - 模型 [App\Product] 没有查询结果 36
- javascript - 如何通过编写少量代码在 React 中创建大量变量
- spring-boot - 使用 Springboot @Conditional 动态加载数据类型