Java– ;无法以整数数组中的索引为目标

Java– ;无法以整数数组中的索引为目标,java,arrays,Java,Arrays,给定一个满是整数的数组,我需要打印一个不包括数字13以及紧跟在13之后的数字(如果有)的和。例如: int[]nums={1,1,13,1,13}应该返回2的和 我在数组中循环以从最终和中排除13,但我不知道如何在我试图查找的索引(如果存在)之后立即将其作为目标。我一直遇到“数组索引超出边界异常” publicstaticvoidmain(字符串[]参数){ int[]nums={1,1,13,1,13}; int targetNums=0; 整数和=0; int-sumFixed=0; 对于(

给定一个满是整数的数组,我需要打印一个不包括数字13以及紧跟在13之后的数字(如果有)的和。例如:

int[]nums={1,1,13,1,13}
应该返回2的和

我在数组中循环以从最终和中排除13,但我不知道如何在我试图查找的索引(如果存在)之后立即将其作为目标。我一直遇到“数组索引超出边界异常”

publicstaticvoidmain(字符串[]参数){
int[]nums={1,1,13,1,13};
int targetNums=0;
整数和=0;
int-sumFixed=0;
对于(int i=0;i
您发布的代码不会抛出
ArrayIndexOutOfBoundsException
。也许您尝试了其他引发该异常的方法。但它不会消除
13
后面的数字

如果当前编号为
13
,请将下一个编号添加到
targetNums
,注意不要在检查下一个索引的长度时离开数组的末尾

if (nums[i] == 13) {
    targetNums += nums[i];

    // Added code
    if (i < nums.length - 1)
    {
        targetNums += nums[i + 1];
    }
    // End added code
}
if(nums[i]==13){
targetNums+=nums[i];
//添加代码
如果(i
您发布的代码不会抛出
ArrayIndexOutOfBoundsException
。也许您尝试了其他引发该异常的方法。但它不会消除
13
后面的数字

如果当前编号为
13
,请将下一个编号添加到
targetNums
,注意不要在检查下一个索引的长度时离开数组的末尾

if (nums[i] == 13) {
    targetNums += nums[i];

    // Added code
    if (i < nums.length - 1)
    {
        targetNums += nums[i + 1];
    }
    // End added code
}
if(nums[i]==13){
targetNums+=nums[i];
//添加代码
如果(i
公共静态void main(字符串[]参数){
int[]nums={1,1,13,1,13};
int-sumFixed=0;
布尔值=假;
对于(int i=0;i
公共静态void main(字符串[]参数){
int[]nums={1,1,13,1,13};
int-sumFixed=0;
布尔值=假;
对于(int i=0;i
公共静态void main(字符串[]参数){
int[]nums={1,1,13,1,13};
整数和=0;
对于(int i=0;i
公共静态void main(字符串[]参数){
int[]nums={1,1,13,1,13};
整数和=0;
对于(int i=0;i
使用迭代器的不同方法。因此,不需要处理索引或标志

Iterator<Integer> iter = Arrays.asList(nums).iterator();
while (iter.hasNext()) {
    Integer num = iter.next();
    if (num == 13) {
        targetNums += num;
        if (iter.hasNext()) {
            targetNums += iter.next(); // not sure if you want to add this to targetNums, too...
        }
    } else {
        sum += num;
    }
}
Iterator iter=Arrays.asList(nums.Iterator();
while(iter.hasNext()){
整数num=iter.next();
如果(num==13){
targetNums+=num;
if(iter.hasNext()){
targetNums+=iter.next();//不确定是否也要将此添加到targetNums。。。
}
}否则{
sum+=num;
}
}

使用迭代器的不同方法。因此,不需要处理索引或标志

Iterator<Integer> iter = Arrays.asList(nums).iterator();
while (iter.hasNext()) {
    Integer num = iter.next();
    if (num == 13) {
        targetNums += num;
        if (iter.hasNext()) {
            targetNums += iter.next(); // not sure if you want to add this to targetNums, too...
        }
    } else {
        sum += num;
    }
}
Iterator iter=Arrays.asList(nums.Iterator();
while(iter.hasNext()){
整数num=iter.next();
如果(num==13){
targetNums+=num;
if(iter.hasNext()){
targetNums+=iter.next();//不确定是否也要将此添加到targetNums。。。
}
}否则{
sum+=num;
}
}

但这不是产生边界外性感觉的代码,是吗?@SebastianS是的,不是。我取出了那部分代码。目前被接受的答案加起来不等于2。但这不是产生越界性感觉的代码,是吗?@SebastianS是的,不是。我去掉了那部分代码。当前接受的答案加起来不等于2。
Iterator<Integer> iter = Arrays.asList(nums).iterator();
while (iter.hasNext()) {
    Integer num = iter.next();
    if (num == 13) {
        targetNums += num;
        if (iter.hasNext()) {
            targetNums += iter.next(); // not sure if you want to add this to targetNums, too...
        }
    } else {
        sum += num;
    }
}