2014-09-23 3 views
0

Okay,Условная петля через все значения, основанные на первом значении

Итак, у меня возникла проблема с формулировкой этого вопроса. Возможно, проще привести пример:

Предположим, мы рассмотрим четыре сезона: зима, весна, лето и осень (в этом конкретном порядке). И предположим теперь, что мы имеем следующий текст:

I love the Summer. 
The Winter is not a good season. 
Spring brings more joy. 
And Fall is the best. 

Теперь предположим, что у меня есть программа, которая считывает файл, и при встрече первый сезон (в данном случае, Summer) заменяет все другие сезоны с первой инстанции , Затем он печатает текст снова, на этот раз со следующим сезоном, неоднократно, до тех пор, пока не будут покрыты все сезоны.

Например, выше текст должен произвести следующий вывод:

//..Replace with 'Summer' 
I love the Summer. 
The Summer is not a good season. 
Summer brings more joy. 
And Summer is the best. 
//.. Replace with 'Winter' 
I love the Winter. 
The Winter is not a good season. 
Winter brings more joy. 
And Winter is the best. 
//.. Replace with 'Spring' 
I love the Spring. 
The Spring is not a good season. 
Spring brings more joy. 
And Spring is the best. 
//.. Replace with 'Fall' 
I love the Fall. 
The Fall is not a good season. 
Fall brings more joy. 
And Fall is the best. 

Теперь, однако, если стихотворение гласил:

I love the Fall. 
The Winter is not a good season. 
Spring brings more joy. 
And Summer is the best. 

Программа будет начать с заменой каждого экземпляра сезон с «Падением», а затем сделать то же самое для зимы, весны и лета. (Так как зима, весна, лето, осень) является порядком по умолчанию.

Вкратце: первый встреченный сезон определяет первую итерацию действия «заменить». То есть, если «Лето» встречается, весь текст заменяет его на лето. Затем с Зимой, весной и осенью. Если сначала встречается «Весна», текст сначала заменяет все сезоны «Весной», затем «Зимой», «Летом» и «Падением».

Я знаю, что можно было бы сделать это, написав ряд условных операторов, таких как:

if summer 
    replace summer 
    replace winter 
    replace spring 
    replace fall 

else if spring 
    replace spring 
    replace winter 
    replace summer 
    replace fall 

else if winter 
    replace winter 
    replace spring 
    replace summer 
    replace fall 

else if fall 
    replace fall 
    replace winter 
    replace spring 
    replace summer 

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

Если бы этот вопрос имел какое-либо значение, я был бы очень признателен за совет. Я не особенно ищу код, а скорее советы о том, как подойти к такому вопросу.

Спасибо, ребята.

ответ

1

Прямое подход будет:

  1. Извлечение слова в порядке их и поместить их в список.
  2. Прокрутите каждый элемент в этом списке.
  3. Внутри этого цикла проведите все возможные слова и замените его на текущий элемент с шага 2.
  4. Распечатайте результат.

Я не очень много Java, но вот ответ о replacing multiple strings, который может пригодиться.

0

Один из способов сделать это - сохранить сезоны в списке и прочитать список ровно четыре раза.

  1. Список итерация начинается с сезона впервые столкнулся с
  2. Вернуться к началу, если вы дойдете до конца списка, прежде чем 4 читает
0

Вы можете создать упорядоченный список всех сезонов (Winter , Весна, Лето, Осень), а затем, когда вы столкнетесь с перегруппировкой первого сезона, этот список - в вашем списке примеров стал (Лето, Осень, Зима, Спринт).

После этого все, что вам нужно сделать, это перебрать переработанный список и заменить текст, как вы сказали.

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