随机生成10个1--20之间的随机数,要求不能重复。(for循环解题)

题目随机生成到一个10个1--20之间的随机数,要求不能重复,并将这10个数装入到数组中(提示:遇到重复的,则不存放到数组中,继续随机获取下一个数)

这个题目困扰我2个小时之久,后面在网上搜索的答案也都是使用· List  Map之类的集合,可是前期的学习并没有提到这些集合,总感觉答非所问。后面和老师交流才得知可以使用for循环的比较加简单查找来完成这道题目


解题思路:利用Math.random()方法获取随机数,把随机数赋值到数组当中,再遍历数组,把随机出来的值,和遍历出数组中的每个值作比较,如果相等就把for循环次数 i-- 回到上一次循环,再把下一个循环出来的值赋值给上一个循环重复的值(通过在次赋值的方式,去掉数组中重复值的)。


个人总结:不管值是否重复,先给他赋值到数组当中,在通过if比较,如果相等则为重复,然后I--,  让循环到回到上一个循环的下标i,然后通过对上一个重复的值,赋值新的随机数。

package vacationWork;
/**
 * 蚂蚁
 * 2017/12/09
 * */
public class Work02 {
	public static void main(String[] args) {
		int arr[] = new int[10];//10个数的数组
		for (int i = 0; i < arr.length; i++) {
			int index = (int)(Math.random() * 20 + 1);//生产一个1-20的随机数
			arr[i] = index;		//把随机数赋值给下标为数组下标为i的值
			
			for (int j = 0; j < i; j++) {//(遍历数组中储存进去的值,i中有几个值则循环几次)
				
				if (arr[j] == arr[i]) {//把储存在数组中的值j 和 随机出的值i 做比较
					i--; //数组的值下标-1,i的循环次数回到上次
					break;
				}
			}
		}
		for (int i = 0; i < arr.length; i++) {//打印数组
			System.out.print(arr[i] + " ");
		}
	}
}

去掉重复值的随机数:




阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页