Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我需要关于JAVA中2D数组平均评级代码的帮助_Java_Arrays_Algorithm - Fatal编程技术网

我需要关于JAVA中2D数组平均评级代码的帮助

我需要关于JAVA中2D数组平均评级代码的帮助,java,arrays,algorithm,Java,Arrays,Algorithm,我需要帮助我的代码,我的输入评级是 -1 2 3 5 -1 5 3 3 1 4 2 2 5 -1 1 3 3 5 4 3 -1 1 1 4 1 3 3 1 2 3 4 -1 4 1 2 4 5 4 2 3 3 -1 2 3 -1 2 5 -1 3 3 5 2 2 1 2 3 5 3 4 2 -1 1 -1 4 1 3 5 2 1 5 3 -1 5 2 1 3 4 5 3 2 -1 -1 3 2 -1 5 5 2 2 4 4 2 3 2 -1 3 4 4 3 1 2 1 1 5 2 2 4 2 3

我需要帮助我的代码,我的输入评级是

-1 2 3 5 -1 5 3 3 1 4 2 2 5 -1 1 3 3 5 4 3
-1 1 1 4 1 3 3 1 2 3 4 -1 4 1 2 4 5 4 2 3
3 -1 2 3 -1 2 5 -1 3 3 5 2 2 1 2 3 5 3 4 2
-1 1 -1 4 1 3 5 2 1 5 3 -1 5 2 1 3 4 5 3 2
-1 -1 3 2 -1 5 5 2 2 4 4 2 3 2 -1 3 4 4 3 1
2 1 1 5 2 2 4 2 3 4 3 -1 5 2 2 5 3 5 2 1
3 -1 3 4 -1 2 5 -1 -1 4 3 -1 3 -1 2 5 5 5 4 2
4 -1 4 2 3 -1 1 3 4 -1 1 4 4 4 -1 2 -1 1 4 4
4 3 3 3 -1 2 2 4 3 -1 2 4 3 4 2 -1 -1 2 2 3
3 -1 3 -1 3 4 -1 5 5 -1 -1 -1 1 -1 -1 1 1 2 -1 5
3 -1 3 4 3 4 -1 5 5 2 3 3 4 1 1 -1 -1 -1 -1 4
4 -1 4 4 1 3 -1 5 4 -1 1 3 4 1 -1 1 -1 1 -1 5
5 -1 3 1 4 3 -1 5 4 1 3 2 1 -1 4 2 1 -1 2 4
3 -1 5 1 4 4 2 5 5 1 2 3 1 1 -1 1 -1 1 -1 5
4 1 5 4 3 -1 1 3 4 -1 -1 3 3 -1 1 1 2 -1 3 5
-1 1 1 3 -1 3 1 3 -1 -1 3 -1 5 2 2 1 4 -1 5 -1
3 -1 2 3 1 5 4 3 3 -1 5 -1 5 2 -1 4 4 3 3 3
1 1 1 3 2 4 1 -1 -1 -1 5 -1 3 -1 -1 1 -1 2 5 2
-1 2 3 5 -1 4 3 1 1 3 3 -1 4 -1 -1 4 3 2 5 1
-1 1 3 3 -1 3 3 1 -1 -1 3 -1 5 -1 -1 3 1 2 4 -1
3 -1 2 4 1 4 3 -1 2 3 4 1 3 -1 2 -1 4 3 5 -1
-1 1 3 5 -1 4 2 1 -1 3 3 2 3 2 -1 3 1 -1 3 -1
3 2 2 3 -1 5 -1 -1 2 3 4 -1 4 1 -1 -1 -1 -1 4 2
-1 3 -1 -1 4 -1 2 -1 2 2 2 5 -1 3 4 -1 -1 2 -1 2
1 4 3 -1 3 2 1 -1 -1 -1 1 3 1 3 3 1 -1 -1 -1 3
4 3 3 -1 4 2 -1 4 -1 -1 2 4 -1 3 4 2 -1 -1 -1 4
-1 5 1 -1 4 1 -1 3 2 2 -1 4 1 3 3 1 -1 -1 -1 3
-1 4 2 1 5 -1 -1 2 1 1 -1 5 -1 5 4 1 2 2 -1 1
2 5 2 -1 3 -1 -1 1 -1 2 -1 4 2 4 3 -1 2 1 -1 -1
2 5 1 1 4 -1 2 1 -1 -1 2 4 -1 3 4 2 -1 -1 -1 4
这是我的平均值[]有20个值的垂直比率的第一个角色。 我很困惑我的代码哪里出了问题,如果数字=-1,那么它就设置为0,然后就不算了。 这是一个计算一本书平均评分的代码,我的平均[]值与我在计算器上的计算结果不同

public static double [] recommandratings(double[][]ratings) {
    double [] average = new double[20];
    int [] count = new int[20];
    double[] sum = new double[30];
    Arrays.fill(count,0);
    Arrays.fill(sum, 0);
    for(int i= 0;i<20;i++) {
        for(int j=0; j<30; j++) {
            if(ratings[j][i] == -1) {
                ratings[j][i] = 0;
                sum[i] += ratings[j][i];
                count[i]--;
            } else {
                sum[i] += ratings[j][i];
                count[i]++;
            }
        }
    }
    for(int a =0; a<20;a++) {
        average[a] = sum[a]/count[a];
    }
    return average;
}
公共静态双[]推荐评级(双[]评级){
双倍[]平均值=新的双倍[20];
int[]计数=新的int[20];
double[]和=新的double[30];
数组。填充(计数,0);
数组。填充(和,0);

对于(int i=0;i,因为您不想用值-1来计算数字,所以count[i]没有用处--因为只有当数字不等于-1时,您才增加计数。

我认为2D数组的迭代方式在您的情况下是错误的。我做了以下更改,以使其简单且动态。我希望下面的代码将为您提供所需的结果

public static double [] recommandratings (double[][]ratings) {
        int rowSize = ratings.length;
        int colSize = ratings[0].length;
        double [] average = new double[colSize];
        int[] count = new int[colSize];
        for (int row= 0;row < rowSize;row++) {
            for (int col=0; col < colSize; col++) {
                if (ratings[row][col] != -1) {
                    average[col] += ratings[row][col];
                    count[col]++;
                }
            }
        }
        for (int a =0; a < colSize;a++) {
            int sum = (int) average[a];
            average[a] = average[a] / count[a];
            System.out.println("count[" + a + "]=" + count[a] + "; sum[" + a + "]=" + sum + "; average[" + a + "]=" + average[a]);
        }
        return average;
}
公共静态双[]推荐评级(双[]评级){
int rowSize=ratings.length;
int colSize=额定值[0]。长度;
double[]平均值=新的double[colSize];
int[]计数=新的int[colSize];
对于(int row=0;row
p.S.我删除了
sum[]
并重新使用
average[]
来优化内存

更新


此更新基于您声明计数为[a]的注释总是返回30,应该小于30。我使用您的精确数据集和较小的数据集执行了一个测试。我发现我的解决方案返回的数据小于预期的30。因此,我认为您在集成我的解决方案时犯了一些错误。因此,我已经对完整的源代码和输入/输出进行了测试,这将有所帮助积分正确。

结果仍然错误,如果是-1,计数将不计数,-1将不会添加到评分中。我尝试将其运行到system.out计数[a]其中每一行的值为30,但假设小于20。例如,I和相加数字的第一列不是行,而是-1将被忽略,并且不会计入计数。例如,第一列只有21个值和21个计数,因为-1有11个值@蓝能浩 请看一下我答案的更新部分,让我知道要点中的输出是否是您想要的?