for循环的小练习之6个不重复数字的所有组合输出
2017-10-23 21:27
337 查看
for循环的小练习之6个不重复数字的所有组合输出
介绍学习Java基础时做的小练习分享,请大家批评指正!
小练习
需求:输出数字1-6六个数字所有的不同排列组合.分析:首先我们要明确有多少种组合,6位数的所有不同排列组合可用6!计算得出是720种.
代码:
public class Test { public static void main(String[] args) { int count = 0;//定义个计数器先~ ArrayList<int[]> arrList = new ArrayList<>();//我选择使用集合做,存入数组对象 Random r = new Random(); arrList.add(new int[]{1,2,3,4,5,6});//先加个123456的组合(这里也可以不加,为了稳妥我选择加了,这里加了之后下面要减少一个计算,即719个组合) for (int m = 1; m < 720; m++){ int[] arr = new int[6];//6位数组合的数组 for (int i = 0; i < arr.length; i++) {//从这里我们先解决随机数方法产生不重复的6个数字,因为是随机的,所以组合也是随机的 boolean b = true;//定义标记 int num = r.nextInt(6)+1;//1-6的随机数 for (int j = 0; j < arr.length; j++) { if (arr[j] == num) {//如果随机数产生后在遍历过程中有一样的数字的话 b = false;//不进入if i--;//并且回到刚才的步骤重新来一次 break; } } if (b) { arr[i] = num;//如果没有进入上面的if则说明没有重复的,则添加到数组 } }//至此产生不重复1-6数字数组 boolean flag = true;//定义第二个标记,此标记用于集合的添加 for (int i = 0; i < arrList.size(); i++) { if (Arrays.equals(arrList.get(i), arr)) {//使用Arrays中的equals方法对两个数组进行比较,此比较若要相等需同时满足元素及元素顺序完全一致才会true flag = false;//如果相等,则不进入下个if } } if (flag) {//如果没有进入上面的if,说明这个数字排列数组之前没有过 arrList.add(arr);//则添加进集合 count++;//这个count用来验证是否添加了719个数组 System.out.println("添加成功"+count+"个");//同验证用 } else { System.out.println("添加失败");//用于验证 m--;//如果没有添加成功,整个for重新来一次,见最上面 } }//至此产生720个不重复排列数组 //用来看看是不是真的没有重复滴,要验证比较麻烦哈,有耐心的朋友可以真的去验证看看,逻辑没错应该是没问题的了. System.out.println(arrList.size()); for (int i = 0; i < arrList.size(); i++) { for (int j = 0; j < arrList.get(i).length; j++) { System.out.print(arrList.get(i)[j]+" "); } System.out.println(); } } } //PS:这种办法比较麻烦,希望有更好方法的朋友可以交流一下
相关文章推荐
- for循环的小练习之6个不重复数字的所有组合输出
- for循环的小练习之6个不重复数字的所有组合输出
- for循环的小练习之6个不重复数字的所有组合输出
- for循环的小练习之6个不重复数字的所有组合输出
- for循环的小练习之6个不重复数字的所有组合输出
- for循环的小练习之6个不重复数字的所有组合输出
- 福彩双色球中红球由6个1-33之间的数字组合,且不重复,编写代码,使用Set集合来存储随机生成的1-33的数字,然后输出生成的数字
- 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?请输出所有组合
- java 循环问题 大全 求2~100a之内的素数。求水仙花数:(1~1000)。有1、2、3、4四个数字,输出所有能组成的互不相同且无重复的三位数。打印空心菱形
- 122345这6个数字,输出它所有可能的组合;要求4不能在第3位,3和5不能相连。
- java练习:打印 数字1、2、3、4的组合,不能以4开头,1和3不能相邻,且数字不能重复
- HW输入字符串长度,字符串,计数m。从前往后计数,当数到m个元素时,m个元素出列,同时将该元素赋值给m,然后从下一个数计数循环,直到所有数字都出列,给定的数全部为大于0的数字。输出出队队列。
- java循环练习:输出1——100之间的奇数,每行输出5个数字
- 1-9九个数字不重复组成一个三位数加法算式,求出所有组合
- Javascript-for循环案例-打印1-100之间所有的数字
- 字母a-z,数字0-9,现需要其中任意3个作为密码,请输出所有可能组合。
- Java中循环问题:for,while,do-while 各种练习(打印上三角、下三角、输出100以内的素数、水仙花、最大公约、最小公倍数、分解质因数、兔子问题)
- 第一章 基本语法-6循环(for)练习 求一个数的所有约数
- Java循环练习: 有1、2、3、4四个数字,能组成多少个无重复数字的三位数?都是多少?
- 【java】for循环输出数字金字塔