首页 > 解决方案 > 结果不正确:数组首先在元素 [1][1] 处不同;

问题描述

这些是方法的说明,数组在 main 方法中给出。我看到上面的错误,我该如何解决这个问题?这个方法接受一个二维的双精度数组。传入的数组可以是任意大小。对于找到的每个 0 值,您将将此值修改为矩阵中该点的行平均值或列平均值中的较大者。main 方法中提供了两个用于测试 findAverage 方法的二维数组,分别名为 findAvgInput 和 findAvgInputLarge。下图说明了数组在方法开始(左)和方法结束(右)后 0 被最大平均值替换后的状态,列平均值为 ((4.5 + 0 + 8.4 )/3 = 4.3 节 (6 + 0 + 3.4)/3 = 3.13)。
5 4.5 6.8 6 0 3.4 7 8.4 2.3 5 4.5 6.8 6 4.3 3.4 7 8.4 2.3 这是我目前的代码!

public static void findAverage(double [][] array)
    {
        int i,j,k,k1;
        double ra=0,ca=0;
        for(i=0;i<array.length;i++)
        {
            for(j=0;j<array[i].length;j++)
            {
                if(array[i][j]==0) //if element is 0
                {
                    for(k=0;k<array[i].length;k++)
                    {
                        ra+=array[i][k]; //get row average
                    }
                    ra=ra/array[i].length;
                    for(k1=0;k1<array.length;k1++)
                    {
                        ca+=array[k1][j]; //get column average
                    }
                    ca=ca/array.length;
                    //substitute 0 with max of ra and ca
                    if(ra>ca)
                        array[i][j]=ra;
                    else
                        array[i][j]=ca;
                }
            }
        }
        //print info
        for(i=0;i<array.length;i++)
        {
            for(j=0;j<array[i].length;j++)
            {
                System.out.print(array[i][j]+" ");
            }
            System.out.println();
        }

标签: javaarrays2daverage

解决方案


推荐阅读