public class TestSequenceAll {

public static void main(String args[]){
String arr[] = {"asdasd","dddd"};
TestSequenceAll t = new TestSequenceAll();
String str = "";
for(int i = 1;i<=arr.length;i++){
str = t.getSequence(arr, 0, i);
}
System.out.println(str);
}
 List<Object> list = new ArrayList<Object>();
public  String getSequence(String[] arr, int begin, int num) {
String wordstr = "";
if (num == 0) {
String[] str = list.toArray(new String[list.size()]);
for(int i = 0;i<str.length;i++){
wordstr +=str[i]+"|";
}
// System.out.print(wordstr);
return wordstr;
} else {
for (int i = begin; i < arr.length; i++) {
list.add(arr[i]);
swap(arr, begin, i);
getSequence(arr, begin + 1, num - 1);
swap(arr, begin, i);
list.remove(arr[i]);
}
return wordstr;
}
}
public static void swap(String[] arr, int from, int to) {
if (from == to) {
return;
}
String tmp = arr[from];
arr[from] = arr[to];
arr[to] = tmp;
}
}
为什么得不到输不出我要的str的值呢?我要怎么写从可以得到?

解决方案 »

  1.   

    请好好的看下你的代码? t.getSequence(arr, 0, i);
     i 总是大于 0 ,而你在 getSequence(...) 中并没有在 != 0(else) 中
     wordstr 字符串作任何处理,而是直接返回 "". main方法中肯定是"" ,你打印到控制台上肯定什么都没。。明白、
      

  2.   

    我就是想实现一个组合加排列啊,比如一个String [] str = {"A","B","C"};用|把结果分开,得到的结果是A|B|C|AB|AC|BC|BA|CA|CB|ABC|ACB|BCA|BAC|CAB|CBA这就是我要的结果啊,怎么样用程序去实现啊。
      

  3.   


    好好看的该是你,else里面有递归
      

  4.   

    http://topic.csdn.net/u/20100803/21/c9ae1987-5392-4896-b3ae-e5a5647627b9.html 你们俩同学吧
      

  5.   

    public class TestSequenceAll { public static void main(String args[]){
    String arr[] = {"a","b","c"};
    TestSequenceAll t = new TestSequenceAll();
    String str = "";
    for(int i = 0;i<=arr.length;i++){
    str = t.getSequence(arr, 0, i);

    }
    System.out.println(str);

    }
    List<Object> list = new ArrayList<Object>();
    String wordstr = "";//你需要递归不能每次在方法中声明这个变量
    public String getSequence(String[] arr, int begin, int num) {

    if (num == 0) { 
    String[] str = list.toArray(new String[list.size()]);
    for(int i = 0;i<str.length;i++){
    //wordstr +=str[i]+"|";
    wordstr +=str[i];
    }
    wordstr +="|";//在这里隔开
    //  System.out.print(wordstr);
    return wordstr;
    } else {
    for (int i = begin; i < arr.length; i++) {
    list.add(arr[i]);
    swap(arr, begin, i);
    getSequence(arr, begin + 1, num - 1);
    swap(arr, begin, i);
    list.remove(arr[i]);
    }
    return wordstr;
    }
    }
    public static void swap(String[] arr, int from, int to) {
    if (from == to) {
    return;
    }
    String tmp = arr[from];
    arr[from] = arr[to];
    arr[to] = tmp;
    }
    }
    其实你实现了,就是两个小地方有点毛病
      

  6.   

    还有getSequence第一个for需要从0开始