如果数组在java中是奇数,则从一半开始循环



我有一个问题,就像在tittle中一样,我想为具有奇数元素的数组进行循环,

Ex。[5,5,3,7]以这种方式,程序将对左和(array.lenght/2(取5+5,对右和取3+7。毕竟我想比较一下。

问题是,当数组看起来像[5,5,3]时,我无法制作数组。length/2

问题是我能做什么?

int rightSum = 0;
int leftSum = 0;
for (int i = 0; i < array.length / 2; i++) {
leftSum += array[i];
}
if (array.length % 2 == 0) {
for (int i = array.length / 2; i < array.length; i++) {
rightSum += array[i];
}
} else {
}
return leftSum == rightSum;
}

给定您的代码,您可以删除if-else子句,并使您循环如下(忽略中间元素(:

for (int i = 0; i < array.length / 2; i++) {
leftSum += array[i];
}
for (int i = array.length - 1; i > array.length/2; i--) {
rightSum += array[i];
}

如果您希望将中间元素添加到左侧,请将第一个循环上的条件修改为'i<数组长度/2';如果要将中间元素添加到右侧,请将第二个循环中的条件修改为'i>阵列长度/2'

我刚刚修复了你的代码,但有一种更好的方法来编码它。Patryk,我想你是编码新手,所以试着为代码编写一些自动化测试并进行重构,以提高其质量。快乐的学习。

如果需要,可以在一个循环中完成。只需在中途进行迭代,并从左到右对适当的值求和。如果数组的长度为奇数,则忽略中间值。

请注意,如果您更改条件以包含中间值,它将简单地添加到两边的和中。所以这真的没有意义。

public static boolean halfSums(int[] arr) {
int left = 0;
int right = 0;
for (int i = 0; i < arr.length/2; i++) {
left += arr[i];
right+= arr[arr.length-i-1];
}
return left == right;
}

相关内容

  • 没有找到相关文章