我必须编写一个函数“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();
}
}
答案 0 :(得分:3)
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;
}