-2

我有一个方法 runningTotal,它返回一个新的 ArrayList,其中包含原始列表的运行总计。换句话说,新列表中的第 i 个值应该存储原始列表中元素 0 到 i 的总和。例如,如果变量列表存储以下值序列:

[2, 3, 5, 4, 7, 15, 20, 7] 并进行以下调用:

System.out.println(runningTotal(list)); 那么变量列表应该存储以下值序列:

[2、5、10、14、21、36、56、63]。

我写了一个方法,我知道这是错误的。但我正在寻找一个提示来解决它。这是我的代码。请提供提示,不要给我完整的解决方案。

    public static List<Integer> runningTotal(List<Integer> list)
    {
        List<Integer> list2=new ArrayList<Integer>();
        //int sum=0;
        for(int i=0;i<list2.size();i++)
            list2.add(list2.get(i)+list.get(i+1));
        return list2;
    }
4

2 回答 2

1

您的新列表为空。

您需要向其中添加内容;您无法设置列表中尚不存在的索引。

于 2013-10-24T02:41:41.457 回答
1

正如你所说的不要给出完整的来源,我给你一个小提示:)

  • 使用通用列表

列表 list1=new ArrayList();

  • 您要添加的第一个元素来自第二个列表,因此您必须为第一次迭代设置 if 条件,并直接将第一个元素添加到新列表中。所以看起来像

list2.add(list2.get(i)+list.get(i+1));

  • 正如SLaks所说,您不能在新列表上使用 SET,请使用添加。

试试这个代码

public static List<Integer> runningTotal(List<Integer> list)
{
    List<Integer> list2=new ArrayList<Integer>();
    int sum=0;
    for(Integer num:list){
       sum+=num;
      list2.add(sum);
    }
    return list2;
}
于 2013-10-24T03:02:29.933 回答