在for循环条件下使用两个不同数组的数组索引值?

时间:2016-08-30 20:56:29

标签: java arrays for-loop data-structures

int[] starTime = {0,2,5,8}
int[] relinqtime = {2,4,9,10}

int[] resReqRAM= {9,8,7,5}
int[] totalDuration = {0,0,0,0,0,0,0,0,0,0}

 for ( int j = 0; j<starTime.length ; j++){
            for( int k =  starTime[j];  k <= relinqtime[j]; k++){
                 totalDuration[k]+= resReqRAM[j];

执行此循环后我想要的输出是startime[j]到值relinqtime[j]的值应该成为totalDuration[k]的索引,对于那些特定索引,值应该是值{ resReqRAM[j]并且应该在每次迭代时添加。

像:

**iteration 1**

int[] totalDuration = {9,9,9,0,0,0,0,0,0,0}

**iteration 2**

int[] totalDuration = {9,9,9+8,0+8,0+8,0,0,0,0,0}

**iteration 3**


int[] totalDuration = {9,9,9+8,0+8,0+8,0+7,0+7,0+7,0+7,0}

**iteration 4**

int[] totalDuration = {9,9,9+8,0+8,0+8,0+7,0+7,0+7+5,0+7+5,0+5}

我正在使用上面提到的for循环来获取相同但是给出错误:数组索引超出范围。

是否应该更改循环条件或逻辑错误?

2 个答案:

答案 0 :(得分:3)

您初始化的totalDuration数组的大小仅为10。

但是在最后一次迭代中,您尝试使用的是访问11Th元素 totalDuration [k]其中k = 10。所以它给出了arrayIndexOutOfBound异常。因为数组索引从0开始。因此,您需要增加数组的大小或更改内部循环条件。

答案 1 :(得分:0)

如果您需要预期结果,可以修改 starTime relinqtime 值,

 int[] starTime = {0,2,5,7} 
 int[] relinqtime = {2,4,8,9}

或者,简单地向 totalDuration 数组添加一个零,这可能会产生一个额外的值(不推荐)。