我需要实现一种方法,该方法返回所有具有奇数索引的元素的交替总和减去所有具有偶数索引的元素的总和。返回的总和应为 -1
。 1 - 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;
}
}
谁能告诉我哪里出错了?
这是一个类,请原谅我的基本代码和错误。
最佳答案
我会这样做:
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);
}
我已经摆脱了方法中的 return 并将其更改为 void(因为您正在打印其中的结果,所以不需要返回它。
您不需要两个不同的总和值,也不需要存储数组的长度。
使用总值并将其设置为 0。然后 for 循环遍历数组的长度。 %2 将数字除以 2 并确定余数。所以对于第一个循环,它将计算 0/2 并计算出余数(显然是 0)。当它 ==0 时,执行 for 循环中的第一个 if 语句(添加数字)。
第二次通过时,它计算出 1/2,即 0 剩余 1 - 因此执行 else 语句,依此类推。此外,请注意我是如何去掉 if 和 else 语句周围的大括号的。只要这些语句是一行,就不需要大括号——去掉 out 会使程序更易于阅读(在我看来)。显然,如果它们下面需要不止一行,则需要重新添加大括号。
关于java - 循环遍历一个 int 数组并在其中使用模数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14924285/