2015-09-26 29 views
1

enter image description here組合詞,併產生變化從多個文本框

上面是截圖什麼,我儘量做到當用戶按下生成我想生成關鍵字1 +關鍵字2 +關鍵字3的順序所有可能的組合。

例如在這種情況下,如果用戶產生的結果應是

頂部護膝 頂部腿支架 最好護膝 最好腿支架 貓護膝 貓腿括號

根據輸入的文本我試圖產生所有可能的組合,但卡住,因爲我無法計算邏輯。

這是我迄今

  1. 我創建了3名不同的列表,並添加文本行到相應列表進行(表1包含 - 頂部,最好,貓),(表2中含有 - 膝, (列表3包含 - 大括號)

  2. 創建的類接受三個列表參數,並嘗試使用for循環生成所有可能的組合,並最終刪除所有重複項,但對於循環邏輯不起作用。

代碼 -

public List<string> CombineKeywords(List<string> keyword1, List<string> keyword2, List<string> keyword3) 
    { 
     List<string> combinedKeywords = new List<string>(); 

     for (int entryKeyword1 = 0; entryKeyword1 < keyword1.Count; entryKeyword1++) 
     { 
      combinedKeywords.Add(String.Concat(keyword1[entryKeyword1], " ", keyword2[entryKeyword1], " ", keyword3[entryKeyword1])); 

      for (int entryKeyword2 = 0; entryKeyword2 < keyword2.Count; entryKeyword2++) 
      { 
       combinedKeywords.Add(String.Concat(keyword1[entryKeyword1], " ", keyword2[entryKeyword2], " ", keyword3[entryKeyword1])); 

       for (int entryKeyword3 = 0; entryKeyword3 < keyword3.Count; entryKeyword3++) 
       { 
        combinedKeywords.Add(String.Concat(keyword1[entryKeyword1], " ", keyword2[entryKeyword1], " ", keyword3[entryKeyword3])); 
       } 
      } 
     } 

     List<string> uniquecombinedKeywords = combinedKeywords.Distinct().ToList(); 
     return uniquecombinedKeywords; 

回答

3

創建一套試圖-每組合嵌套循環的未確定量打交道時會變得有些困難(例如,任何數目的10和100之間的元素)。

在你提出的那種情況下(3個變量帶3個循環),你只需要對索引進行系統化,記住組合是在最內部的循環中創建的。

一個修正代碼的版本:

for (int entryKeyword1 = 0; entryKeyword1 < keyword1.Count; entryKeyword1++) 
{ 
    for (int entryKeyword2 = 0; entryKeyword2 < keyword2.Count; entryKeyword2++) 
    { 
     for (int entryKeyword3 = 0; entryKeyword3 < keyword3.Count; entryKeyword3++) 
     { 
      combinedKeywords.Add(String.Concat(keyword1[entryKeyword1], " ", keyword2[entryKeyword2], " ", keyword3[entryKeyword3])); 
     } 
    } 
} 
+0

真棒你的生活更安全,現在我明白我做錯了什麼 –

+0

@AlstonAntony歡迎您。 – varocarbas