首页 > 解决方案 > 有没有办法可以将所有大于前一个的数字相加?

问题描述

我正在尝试在数组中添加比它检查的最后一个数字更多的所有数字。我收到此错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
    at RaySumLast.sum(RaySumLast.java:16)
    at RaySumLast.main(RaySumLast.java:25)

这是我的代码:

class RaySumLast
{
    static int arr[] = {-99, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5};

    static int sum()
    {
        int sum = 0;

        for (int i : arr) {
            if (i < arr[i-1])
                sum += i;
        }
        return sum;
    }

    public static void main(String[] args)
    {
        cSystem.out.println(sum());
    }
}

我怎样才能解决这个问题?

标签: java

解决方案


您不能value将数组中的 in 用作数组中的一个index。即使您跳过数组的初始值,只要有一个超出范围的值,它也会失败,如本例所示(注意20):

static int arr[] = {-99,1,2,3,4,5,6,7,8,9,20,5};

如果要使用增强的 for 循环,可以使用:

int prev = arr[0];
int sum = prev;

for (int i : arr) {
  if (i > prev)
    sum += i;
  prev = i;
}

但是,我更喜欢使用循环索引的@Domin0 的答案。


推荐阅读