首页 > 解决方案 > 使用Java查找子数组的总和

问题描述

我的问题出在函数 Sum(int z) 中,它应该返回索引 z 处子数组中所有项目的总和,如果索引无效则返回 0。我目前的代码是

public int[][] data;
public calculate(int[][] source) {
        data = source;
    }
    public int size() {
    
    return data.length;
}

 public boolean isValidSubsetIndex(int z) {
        
          if (z<0 || z>= size())
          return false;
                
        return true;
    }
public int sum(int z) {
        int x=0;
        if (isValidSubsetIndex(z)  == true) {
        for (int i = 0; i < data[z].length;i++) {
            for(int j= i; j<i+1; j++)
                    x = x + data[i][j];
                    
            }
        return x;
        }
        return 0;
        
    }
aP = new Analytics(new int[][]{{30, 10, 40},
        {50, 20, 80},
        {10, 60, 30},
        {60, 60, 60}});
       

    aHD = new Analytics(new int[][]{{-30, 10, -40},
        {},
        {-10, 60},
        {-60},
        {-20, -20, -20, -20, -20},
        {-20, -20},
        {-20},
        {},
        {50},
        {10, 30, 20}});

下面给出了它失败的测试。我当前的代码仅提供正确的第一个结果(sum(0) 的 sum 80)。如果 sum(1) 结果应该是 150,如果 sum(2) 结果应该是 100

public void testSumHD() {
        testSumD();
        int[] sumHD = {-60, 0, 50, -60, -100, -40, -20, 0, 50, 60};
        
        for(int i=0; i < sumHD.length; i++) {
            assertEquals(sumHD[i], aHD.sum(i));
        }
        assertEquals(0, aHD.sum(-1));
        assertEquals(0, aHD.sum(10)); 
    }

标签: javaarrays

解决方案


解是 x = x + data[z][j];


推荐阅读