黑马程序员技术交流社区

标题: 求大神帮忙看下这个问题 [打印本页]

作者: xcdhr123    时间: 2014-7-10 11:09
标题: 求大神帮忙看下这个问题
/**
*
*编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,
* 例如: 原始字符串是"abc",打印得到下列所有组合情况: "a" "b" "c"
* "ab" "bc" "ca" "ba" "cb" "ac"
*  "abc" "acb" "bac" "bca" "cab" "cba"
*
* @author Administrator
*
*/
public class Text6 {
        public static void main(String[] args) {
                char[] ch = { 'a', 'b', 'c' };
                ArrayList list = new ArrayList();
                ArrayList list2 = new ArrayList();
                ArrayList list3 = new ArrayList();
               
                for (int i = 0; i < ch.length; i++) {
                        list.add(ch[i]);

                        for (int j = 0; j < ch.length; j++) {
                                if (i != j) {
                                        list2.add(ch[i] + "" + ch[j] + " ");

                                        for (int j2 = 0; j2 < ch.length; j2++) {
                                                if (j2 != i && j2 != j) {
                                                        list3.add(ch[i] + "" + ch[j] + "" + ch[j2]);
                                                }

                                        }
                                }

                        }

                }
                for (int a = 0; a < list.size(); a++) {
                        System.out.print(list.get(a) + " ");
                }
                  //下面会出错。
                for (int a = 0; a < list2.size(); a++) {
                        System.out.print(list.get(a) + " ");
                }
                for (int a = 0; a < list3.size(); a++) {
                        System.out.print(list.get(a) + " ");
                }

        }

}
这个方法可以么?我想把for循环遍历封装,但是总报错,求大神帮忙。


作者: lancerjs    时间: 2014-7-10 12:15
  1. for (int a = 0; a < list2.size(); a++) {
  2.                         System.out.print(list2.get(a) + " ");
  3.                 }
  4.                 for (int a = 0; a < list3.size(); a++) {
  5.                         System.out.print(list3.get(a) + " ");
  6.                 }
复制代码


作者: xcdhr123    时间: 2014-7-10 13:24
lancerjs 发表于 2014-7-10 12:15

不能直接打印,得到的结果不一样,
作者: xcdhr123    时间: 2014-7-10 13:26
public class Text6 {
        public static void main(String[] args) {
                // 定义一个char类型的数组
                char[] ch = { 'a', 'b', 'c' };
                //定义ArrayList集合
                ArrayList<String> list = new ArrayList<String>();
                ArrayList<String> list2 = new ArrayList<String>();
                ArrayList<String> list3 = new ArrayList<String>();
                //分别取出元素并存到ArrayList中
                for (int i = 0; i < ch.length; i++) {
                        list.add(ch[i] + "");

                        for (int j = 0; j < ch.length; j++) {
                                if (i != j) {
                                        list2.add(ch[i] + "" + ch[j]);

                                        for (int j2 = 0; j2 < ch.length; j2++) {
                                                if (j2 != i && j2 != j) {
                                                        list3.add(ch[i] + "" + ch[j] + "" + ch[j2]);
                                                }

                                        }
                                }

                        }

                }
                //调用traverse遍历
                traverse(list);
                traverse(list2);
                traverse(list3);

        }
        //封装遍历方法
        public static void traverse(List<String> list) {
                for (String string : list) {
                        System.out.print(string + " ");
                }
                System.out.println("");
        }

}
弄明白了,转型的问题




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2