2012-03-06 30 views
1

此問題可能最適合於對磁盤讀取調度有所瞭解的任何人。適用於陣列中的Java的

我的代碼:

for(int i = readqueue_tail; i<readqueue_head; i++) 

我然後使用i到訪問元素在readqueue陣列,其上升到255。然而,一旦隊列被填充,它從0開始重新填充(如這些請求將被服務,這並不重要)。

我遇到的問題是從尾部搜索到readqueue_head,因爲當頭循環並再次超過0時,循環條件失敗。我將如何去解決這個問題?

回答

3

其他選項只是使用模數。

int i = readqueue_tail; 
while (i != readqueue_head) 
{ 
    i = (i + 1) % 256; 
} 
+0

完美,謝謝! – gdrules 2012-03-06 19:22:38

2
int i = readqueue_tail; 
boolean stop = false; 
while(!stop) { 
    // process the queue item 

    // advance the position 
    if(i<readqueue_head) { 
    i++) 
    } else { 
    i = readqueue_tail; 
    } 
} 

這就是你想要做的?

+0

感謝您的幫助,我開始使用這個,但切換到模(少代碼^^)。 – gdrules 2012-03-06 19:23:08

1
for(int i = readqueue_tail; i<readqueue_head; i++) { 
if(readqueue_tail == readqueue_head) 
break; 
} 
+0

感謝您的幫助:) – gdrules 2012-03-06 19:24:39

0
for(int i = readqueue_tail; i<readqueue_head; i++) { 
if (i == readqueue_head) { 
    i = readqueue_tail; 
} 
} 

僅僅是明確的,這是一個無限循環。