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循环来获取相同但是给出错误:数组索引超出范围。
是否应该更改循环条件或逻辑错误?
答案 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 数组添加一个零,这可能会产生一个额外的值(不推荐)。