我要在第二个开始到最后一个之间添加所有项目。
例如:
*因此,前两个数字应忽略,其结果是其余数字的总和。
list = [1,2,3,4,5] =>输出:12 list = [6,7,8,9,10,11] =>输出:38
这是我尝试过的:
public static int sumSecondHalfItems(ArrayList<Integer> list) {
int sum = 0;
for(int i = 0; i < list.size(); i++) {
if(list.get(i)>= list.size())
sum = sum + list.get(list.size()/2);
}
return sum;
}
答案 0 :(得分:0)
最简单的解决方案是,如果要对list的元素求和并跳过前2个元素,然后从索引2开始循环,该索引从跳过前2个元素并求和所有元素到list的末尾。
public static int sumSecondHalfItems(ArrayList<Integer> list) {
int sum = 0;
for(int i = 2; i < list.size(); i++) {
sum = sum + list.get(i);
}
return sum;
}
答案 1 :(得分:0)
您的代码无法正常工作的原因有两个,我将尽力解释它们:
首先,您仅在条件成立时list.get(i)>= list.size()
进行总结,这并不是您实际想要的。根据我的理解(如果我错了,请纠正我)您要计算列表中元素的上半部分之和。这肯定不会这样做。在您的第一个示例列表1,2,3,4,5
中,它将仅处理最后一个条目。
即使您的if
语句为多了一个条目返回了true,您仍在尝试在每个循环周期中总结同一列表条目的值:{{ 1}},因为您永远不会通过从列表中删除或添加元素来更改列表的大小。
我编写了以下代码,该代码将始终返回列表元素的上半部分的总和无论列表大小如何,因此您可以尝试使用其他代码大小:
sum = sum + list.get(list.size()/2)
编辑:不能很好地阅读OP代码,所以我更正了解释。
答案 2 :(得分:-2)
public static int sumSecondHalfItems(ArrayList<Integer> list) {
int sum = 0;
int halfSize = list.size()%2 ==0 ? (list.size()/2)-1 : list.size()/2 ;
for(int i = halfSize; i < list.size(); i++) {
sum = sum + list.get(i);
}
return sum;
}