循环遍历int数组并在其中使用modulo

时间:2013-02-17 18:07:01

标签: java arrays modulo

我需要实现一个方法,该方法返回具有奇数索引的所有元素的交替总和减去具有偶数索引的所有元素的总和。返回的总金额应为-11 - 4 + 9 - 16 + 9 = -1

这是我的代码:

public class Arrays
{
public static void main(String[] args){

    int [] data = {1 ,4, 9, 16, 9};

    oddAndEven(data);
}

public static int[] oddAndEven(int[] data){
    int sum = 0;
    int sumA = 0;
    int index = data.length;
    for(int i:data){
    if(index % sumA == 1){
            sum = sum-i;
        }
    else{
        sum = sum+i;
    }
}
    System.out.println(sum);
    return sum;
    }
}

有人可以告诉我哪里出错了吗?

这是一个课堂会议,请原谅我的基本代码和错误。

5 个答案:

答案 0 :(得分:1)

这个怎么样?

public class ArrayMeNow {

    public static void main(String[] args) {
        int [] data = {1 ,4, 9, 16, 9};

        int result = oddAndEven(data);
        System.out.println(result);
    }

    private static int oddAndEven(int[] data) {
        int multiplier = 1;
        int result = 0;

        for(int v:data){
            result += v * multiplier;
            multiplier *= -1;
        }

        return result;
    }

}

答案 1 :(得分:1)

public static int oddAndEven(int[] data) {
    int sum = 0;

    for (int i=0;i<data.length;i++) {
        if (i % 2 == 1) {
            sum = sum - data[i];
        } else {
            sum = sum + data[i];
        }
    }
    System.out.println(sum);
    return sum;
}

答案 2 :(得分:1)

for(int i:data)不会更改索引的值。 sumA应该是2

将您的for循环更改为:

for (int i = 0; i < data.length; i++)
  if (i % 2 == 1)
    sum -= data[i];
  else
    sum += data[i];

答案 3 :(得分:1)

我就是这样做的:

public class test {
    public static void main(String[] args) {

    int [] data = {1 ,4, 9, 16, 9};
    oddAndEven(data);
}

public static void oddAndEven(int[] data) {

    int total = 0;

    for (int i = 0; i < data.length; i++)
    {
        if (i%2==0)
            total = total + data[i];
        else
            total = total - data[i];
    }

    System.out.println(total);
}
  1. 我已经摆脱了方法中的返回并将其更改为无效(因为您在其中打印出结果,因此无需返回它。

  2. 您不需要两个不同的和值,也不需要存储数组的长度。

  3. 使用总值并设置为0.然后for循环遍历数组的长度。 %2将数字除以2并确定余数。因此对于第一个循环,它将计算0/2并计算出余数(显然为0)。当它== 0时,执行for循环中的第一个if语句(添加数字) 第二次,它计算1/2,其中0为剩余1 - 所以执行else语句,依此类推。

  4. 另外,请注意我是如何摆脱if和else语句的大括号。只要这些语句是单行,就不需要括号 - 取出它往往会使程序更容易阅读(在我看来)。显然,如果在它们下面需要不止一条线,则需要读取括号。

答案 4 :(得分:1)

您必须返回类型sum int的{​​{1}}。这是另一种方法。

int[]