gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 04:56:06 27 4
gpt4 key购买 nike

我必须编写一个函数“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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com