java - 有没有办法可以将所有大于前一个的数字相加?
问题描述
我正在尝试在数组中添加比它检查的最后一个数字更多的所有数字。我收到此错误:
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());
}
}
我怎样才能解决这个问题?
解决方案
您不能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 的答案。
推荐阅读
- javascript - 过滤/去重重复变量
- r - 是否有一个 R 函数可以从数字对象填充矩阵的下(或上)对角线(包括对角线)?
- vb.net - 在另一个类中声明一个类的目的是什么?
- sql - 如何使用需要参数的子数据表查询访问表
- python - 在python中将视频转换为二进制数据集
- matlab - 将 matlab 图形保存为 SVG 的问题:SVG 文件的轴长度不正确
- python - 每次运行函数时如何更新数据框?
- python - 基于索引的列表,返回第 n 个索引处的元素
- symfony - 使用 api-platform 时,注释上的未知属性不断出现错误
- php - Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException - Laravel 5.7