如何计算Java中两个数组的交替和?

时间:2015-11-15 01:14:02

标签: java arrays

我必须编写一个函数“alternatingSum(a)”,它接受一个数字数组并返回交替的总和(其中符号交替从正数到负数,反之亦然)。

例如:

int[] a = { 5, 3, 8, 4 };
Assert(alternatingSum(a) == 6); // because 5-3+8-4 == 6

到目前为止,我已尝试获取数组并检查索引是否为奇数(不包括i=0)然后从i+1中减去它,如果它甚至做同样的事情除了加两个。我是否在正确的轨道上?

这是我的代码:

class foo {
    public static int alternatingSum(int[] a){
        int sum=0;
        for (int i=0;i<a.length;i++){
            if (i==0){
                sum+=a[0]-a[1];
            }
            if (i%2 == 0){
                sum+=(a[i]+a[i+1]);
            }
            if (i%2 == 1){
                sum+=(a[i]-a[i+1]);
            }
        }
        return sum;
    } 

    public static void testAlternatingSum(){
        System.out.println("testing code");
        int[] a = { 5, 3, 8, 4 };
        assert (alternatingSum(a) == 6); // because 5-3+8-4 == 6
    }

    public static void main(String[] args){
        testAlternatingSum();
    }
}

2 个答案:

答案 0 :(得分:3)

a var columnHeadingsRange = _xlSheet.Range[ _xlSheet.Cells[COLUMN_HEADING_ROW, FIRST_COL], _xlSheet.Cells[COLUMN_HEADING_ROW, LAST_COL]]; columnHeadingsRange.Interior.Color = XlRgbColor.rgbSkyBlue; columnHeadingsRange.Font.Color = XlRgbColor.rgbWhite; 循环

我只为for保留boolean标志(并在每次循环迭代时切换它)。如果它是even号码,则表示我们正在执行添加。但如果它不是even号码(它是even),那么我们就可以执行unary negative操作。这可能看起来像,

odd

int sum = 0; boolean even = true; for (int i = 0; i < a.length; i++) { sum += even ? a[i] : -a[i]; even = !even } return sum; 循环

您也可以使用for-each loop并将其写为

for-each

答案 1 :(得分:0)

易于阅读。.

int[] alternatingSums(int[] a) {

    int sum1 = 0;
    int sum2 = 0;

    for(int i =0; i < a.length; i++){
        
        if((i % 2) != 1){
            sum1 += a[i];
        }else{
            sum2 += a[i];
        }
    }

    int[] result = {sum1 , sum2};
    
    return result; 
}