A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

xcdhr123

中级黑马

  • 黑马币:154

  • 帖子:64

  • 精华:0

© xcdhr123 中级黑马   /  2014-7-10 11:09  /  1113 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/**
*
*编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,
* 例如: 原始字符串是"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循环遍历封装,但是总报错,求大神帮忙。

3 个回复

倒序浏览
  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.                 }
复制代码

评分

参与人数 1黑马币 +1 收起 理由
xcdhr123 + 1 赞一个!

查看全部评分

回复 使用道具 举报

不能直接打印,得到的结果不一样,
回复 使用道具 举报
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("");
        }

}
弄明白了,转型的问题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马