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

标签 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();
    }
}

最佳答案

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/

相关文章:

java - 简单的 Netty 处理程序,逐字节遍历消息

php - 对数组进行指纹识别的最快方法(从数据数组计算唯一哈希值)

arrays - 如何将 JSON 数组转换为列和行

javascript - NodeJs : Filter mongo query results with results from another collection

c - 将用户输入获取到动态数组 C 时出现问题

java - JBOSS服务器调用页面时出现错误

java协议(protocol)实现头长度

java - Thymeleaf 依赖导致 Spring 工具套件中出现 "Error: Could not find or load main class"

java - 如何在没有连接表的情况下在数据库中存储字符串列表?

javascript - JS 中的 JSON 解析