2012-03-06 3 views
1

Этот вопрос, вероятно, лучше всего подходит для тех, у кого есть некоторое представление о планировании чтения диска.Java for Loop in a Array

У меня есть код:

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

я затем использовать I для доступа к элементам в массиве readqueue, который идет до 255. Однако, как только очередь заполнена, она начинает снова наполнения от 0 (как эти запросы будут обслуживаться, это не имеет значения).

Проблема, с которой я сталкиваюсь, выполняет поиск с хвоста до точки readquue_head, как когда голова контуров округляется и снова проходит 0, условие цикла не выполняется. Как я могу это исправить?

ответ

3

Другие варианты просто используют modulo.

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

Отлично, спасибо! – gdrules

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

Спасибо за помощь, я начал использовать это, но переключился на modulo (меньше кода ^^). – gdrules

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

Спасибо за вашу помощь :) – gdrules

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

просто быть ясно, что это бесконечный цикл.