首页 > 解决方案 > 如何使用嵌套 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 循环。

希望我的描述是可以理解的,有人可以帮助我。

提前致谢

标签: javaarraysloopsfor-loopnested

解决方案


推荐阅读