2009-11-28 6 views
-1

я обхват через список строк, в psudocode это какдля каждой помощи петли

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

перефразируйте вопрос, сейчас непонятно. – Bozho

+4

может быть, какой-то реальный код будет лучше. – Milhous

+0

Можете ли вы разместить несколько примеров входов и ожидаемых результатов? Я думаю, что было бы легче понять, что вы пытаетесь сделать. Кроме того, поскольку вы хотите получить ответ на Java, просто публикация кода Java с комментариями, где он не работает, а не псевдокод, может сделать ваш вопрос более ясным. –

ответ

0

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

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

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 
    } 
} 
+0

вот как я начал, но список, с которым я работаю, не имеет метода размера, поэтому нет способа определить его длину, иначе это будет подход, который я бы взял;) – timmy

+0

Таким образом, вы используете собственный список вместо один из встроенных списков Java или массив? Была ли эта часть задания? –

1

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

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 

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

Смежные вопросы