2014-12-08 41 views
-3

我有一個數組(JAVA)是這樣的:如何獲得所有可能的組合在Array

String arrName[] = {"John","Paul","Luke","Ana"};

,我想有一個像這樣的輸出:

JohnPaul 
JohnLuke 
JohnAna 
PaulJohn 
PualLuke 
PaulAna 
LukeJohn 
LukePaul 
LukeAna 
AnaJohn 
AnaPaul 
AnaLuke 

有人可以幫助我?

+0

你需要一些組合algorythm做到這一點[組合](http://en.wikipedia.org/wiki/Combination名稱)這裏是解決你的問題的庫[combinatoricslib](https://code.google.com/p/combinatoricslib/) – Milkmaid 2014-12-08 05:16:53

+0

你想知道的解決方案或只是有人可以幫忙或不::) – Panther 2014-12-08 05:24:28

+0

可能的重複[一個數組的所有可能的組合](http://stackoverflow.com/questions/5162254/all-possible-combinations-of-an-array) – 2014-12-08 05:35:39

回答

-1

您正在尋找這樣的事情: -

for(int i=0 ; i < arrName.length ; i++){ 
    for(int j=0; j< arrName.length; j++){ 
     if(j != i){ 
      System.out.println(arrName[i]+arrName[j]); 
     } 
    } 
} 
+0

我可以知道爲什麼我的答案是downvoted – Panther 2014-12-08 05:33:21

+0

格式不正確(文本和縮進)。 – 2014-12-08 05:36:55

+0

實際上這比'更好的組合',如果他在數組中重複輸入,它會減少組合。 var array Name = {「John」「Paul」,「John」}。這段代碼會跳過johnjohn' – john17 2014-12-08 05:37:30

1

做陣列和陣列的嵌套foreach循環形式的副本之間的交叉產品。跳過等於海誓山盟

String[] copyArrName = arrName; 
for (String name : arrName){ 
    for (String otherName: copyArrName){ 
     if(name != otherName) 
      System.out.println(name + " " + otherName); 
    } 
} 

這會給你所需的輸出

+0

它會減少組合的情況下,如果他有重複條目陣列。 var array Name = {「John」「Paul」,「John」}。這段代碼將跳過johnjohn。 – Panther 2014-12-08 05:33:01

+0

不錯,我們應該使用引用字符串比較而不是字符串相等比較。編輯傳入! – Freestyle076 2014-12-08 05:34:18

相關問題