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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘斌斌 中级黑马   /  2015-4-21 17:20  /  872 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

作测试题的时候遇见一道        /**

                8、 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:


                原始字符串是"abc",打印得到下列所有组合情况:
                "a" "b" "c"
                "ab" "bc" "ca" "ba" "cb" "ac"
                "abc" "acb" "bac" "bca" "cab" "cba"

         */
public class Test8
{
                public static void main(String[]args)
                {
                        String s = "abc";//
                       
                        //将字符串s转换成一个字符数组
                        char[] arr = s.toCharArray();
                       
                        //思考,用数组的角标将数组中每个元素进行不同的排序
                        //非别输出一个元素,俩个元素,三个元素
                       
                        for(int x=0;x<arr.length;x++)       
                        {       
                                //分别输出字符数组中的每个元素
                                System.out.print(arr[x]+",");
               
                                for(int y=0;y<arr.length;y++)
                                {       
                                        //排除字符相同的情况
                                        if(x==y)
                                                continue;
                                        else
                                        {
                                                //将不同字符装入一个新的数组,
                                                char [] arr1 =new char[]{arr[x],arr[y]};
                                               
                                                //将新字符数组转换成字符窜打印
                                                System.out.print(new String(arr1)+",");
                                               
                                                for(int z=0;z<arr.length;z++)
                                                {       
                                                        //排除字符相同情况
                                                        if(z!=x&&z!=y)
                                                        {
                                                                char [] arr2 =new char[]{arr[x],arr[y],arr[z]};
                                                                System.out.print(new String(arr2)+",");       
                                                        }
                                                        else
                                                                continue;
                                                }
                                        }
                                       
                                       
                                }
                                       
                        }
                }
}



如果是四个字符就得四个for循环,怎么样改写呢?

15 个回复

倒序浏览
lslkkk 来自手机 中级黑马 2015-4-21 18:01:52
沙发
我是来拿黑马币的
回复 使用道具 举报
这个贴不错!
回复 使用道具 举报
我也是来拿黑马币的
回复 使用道具 举报
今天刚学了for和while循环,还好,明天对象和数组,开始小型攻坚战了,还有就是明天晚上要考试了
回复 使用道具 举报
赞同楼上,明天学习函数数组迎接考试
回复 使用道具 举报
学了函数就好解决了
回复 使用道具 举报
新手帮你顶一下
回复 使用道具 举报
Grady 中级黑马 2015-4-21 21:49:39
9#
加油,学到常用API就可以了
回复 使用道具 举报
顶一下。。。。。。
回复 使用道具 举报
我很喜欢,太精彩了
回复 使用道具 举报
黑马币。。。。。
回复 使用道具 举报
谢谢分享了!
回复 使用道具 举报
来拿黑马币哈哈
回复 使用道具 举报
我是过来学习的
回复 使用道具 举报
Cat 中级黑马 2015-4-22 11:46:52
16#
四个还真是有点麻烦。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马