获取特定值的数组索引

时间:2013-08-26 13:41:33

标签: java arrays algorithm search

ArrayIndex|Value|Running total
-------------------------------
   0      |  6  | 6
   1      |  1  | 7
   2      |  6  | 13
   3      |  2  | 15
I:array index
V:value
R:Running total

例如,我需要为给定的运行总计选择合适的索引 12是给定的运行总数,所以适当的索引是2,我将把我的代码块吼到它不工作我试过使用break;在if语句之后,任何人都可以帮我解决这个问题:)

int running_total = 0;
boolean v=false;
    for(int x=0;x<=array.length;x++)
        {
        running_total+=array[x];
        if(running_total>=12)
            {
            if(v==false)
                {
                v= true;
                othermethods(x);
                }
            }
        }

3 个答案:

答案 0 :(得分:1)

您的方法中唯一的错误就是让x运行到array.length,当总数小于12时,导致ArrayIndexOutofBoundsException崩溃。

将您的代码更改为

for(int x=0 ; x < array.length ; x++) {
    ...
}

避免崩溃。

另一个“风格点”是写v==false而不是写!v,而不是写othermethods(x)。最后,由于意图是在找到运行总计满足条件的第一个索引后停止调用break,因此可以使用for(int x=0 ; x < array.length ; x++) { running_total+=array[x]; if(running_total >= 12) { othermethods(x); break; } } 而不是布尔变量重写循环:

{{1}}

答案 1 :(得分:0)

for(int x=0;x<array.length;x++)

长度从0n - 1,因此请将循环中的<=更改为<

答案 2 :(得分:0)

int running_total = 0;
int x = 0;
for(x=0; x<array.length, running_total < 12; x++){
running_total += array[i];
}

//required index is x+1