基于第一个值的条件循环遍历所有值

时间:2014-09-23 12:08:25

标签: java loops conditional-statements

好的,

所以我在回答这个问题时遇到了一些问题。或许更容易提出一个例子:

假设我们考虑四个季节:冬季,春季,夏季和秋季(按特定顺序)。现在假设我们有以下文字:

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. 

该计划将首先用" Fall"替换一个赛季的每个实例,然后在冬季,春季和夏季进行相同的操作。 (自冬季,春季,夏季,秋季)是默认顺序。

简而言之:遇到的第一个赛季定义了他的第一次迭代"替换"行动。也就是说,如果"夏天"遇到了,整个文本的季节都被夏天取代了。然后是冬天,春天和秋天。如果"春天"首先遇到的是,文本首先用“春天”,“春天”,“夏天”和“秋天”取代所有季节。

我知道可以通过编写一系列条件语句来实现这一点,例如:

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

然而,这似乎不是最好的方法。我知道文字必须在某些时候被所有季节所取代。我也知道这些季节的顺序。唯一重要的是第一季的实例,然后确定从哪个季节取出它并放在前面。

如果这个问题有任何意义,我会非常感谢一些建议。我不是特别寻找代码,而是寻找如何处理这样一个问题的提示。

谢谢你们。

3 个答案:

答案 0 :(得分:1)

直截了当的做法是:

  1. 按照出现的顺序提取单词并将其放入List。
  2. 遍历该列表中的每个元素。
  3. 在该循环中,遍历每个可能的单词并将其替换为步骤2中的当前元素。
  4. 打印结果。
  5. 我没有做太多的Java,但这里有一个关于replacing multiple strings的答案可能有用。

答案 1 :(得分:0)

实现这一目标的一种方法是将季节保持在列表中,并将列表正确读取四次。

  1. 列表迭代从第一次遇到的季节开始
  2. 如果在4次读取之前到达列表的末尾,则返回到开头

答案 2 :(得分:0)

您可以创建所有季节的有序列表(冬季,春季,夏季,秋季),然后当您遇到第一季重新排列列表时 - 在您的示例列表中将成为( Summer ,秋天,冬天,冲刺)。

之后,您需要做的就是迭代重新排列的列表并按照您的说法替换文本。

相关问题