2014-12-08 73 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