下半年的总和

时间:2019-05-29 05:12:31

标签: java arrays arraylist

我要在第二个开始到最后一个之间添加所有项目。

例如:

*因此,前两个数字应忽略,其结果是其余数字的总和。

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;
    }

3 个答案:

答案 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;
      }