我必须编写一个函数“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();
}
}
最佳答案
for
循环
我只会为 even
保留一个 boolean
标志(并在每次循环迭代时切换它)。如果它是一个 even
数字,那么我们正在执行加法。但是如果它不是一个偶数
数(它是一个奇数
)那么我们可以执行一个unary negative手术。这可能看起来像,
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
循环
你也可以使用 for-each
loop并像这样写
boolean even = true;
int sum = 0;
for (int value : a) {
sum += even ? value : -value;
even = !even;
}
return sum;
关于java - Java中如何计算两个数组的交替和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33715315/