для каждой помощи цикла - PullRequest
       6

для каждой помощи цикла

0 голосов
/ 28 ноября 2009

Я перебираю список строк, в псевдокоде это как

for (each node in my list)
    if the node.getBooleanVariable == true
        add one to my counter
    else 
        take one away from my counter
    if my counter = another counter 
       print node.getStringVariable() //THIS IS WHERE I AM STUCK

здесь я хочу объединить строку из node.getStringVariable () с узлом, следующий логический элемент которого является ложным. Это делает это более ясным?

спасибо

Ответы [ 2 ]

1 голос
/ 28 ноября 2009

Если ваш список узлов не слишком длинный, было бы более понятно (на мой взгляд) выделить строки, которые нужно объединить, в другой список, а затем объединить их в конце. Например:

for (each node in my list)
    if the node.getBooleanVariable == true
        add one to my counter
    else 
        take one away from my counter
    if my counter = another counter 
        concatList.add(node.getStringVariable())

for (each str in concatList)
    finalString += str

Это не самый эффективный подход, но он не будет плохим. Если в вашем списке всего пара тысяч элементов, вы не заметите затрат на создание отдельного списка. И я думаю, что это немного легче понять, но это только личное мнение.

0 голосов
/ 28 ноября 2009

Если вашей логике нужно «смотреть вперед» в вашем списке при итерации по нему, чтобы найти следующий ложный узел, тогда for-each может не подойти. Это потому, что for-each позволяет вам смотреть на текущий элемент списка в любой момент времени. Если вы можете поделиться некоторой справочной информацией о требованиях цикла, кто-то может предложить какой-то псевдокод, который работает без необходимости смотреть вперед.

Если окажется, что вам нужно смотреть вперед, вам, возможно, придется использовать стандартный цикл for, чтобы получить больше контроля.

for (int i = 0; i < myList.size(); i++) {
   Node node = myList.get(i);
   // oh, I have to look forward?  use another for loop
   for (int j = i + 1; j < myList.size(); j++) {
      Node forwardNode = myList.get(j);
      // do stuff with forwardNode
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...