想要问问老师这个代码如何解决~
Random rd=new Random(); int number; int[] sushe=new int[10]; for(int i=0;i<10;i++) { number=rd.nextInt(sushe.length); //判断是否存在重复 for(int m=0;m<sushe.length;) { if(sushe[m]==number) { number=rd.nextInt(sushe.length); m=0; } }
这个是想要生成1-10不重复的随机数,但是如果m=0,m++是在循环结束以后进行的,也就是说如果在数组下标为0时,这个判断重复的方法就失效了,想了很久,想要问问老师如何解决
正在回答
你可以在循环外,给数组第一个元素直接赋值一个随机数,这个肯定是不会重复的,然后循环中就不用再判断第一个元素了。因为第一个元素肯定没有重复的,判断也没有意义。
另外,你的循环里没有看到给数组元素赋值,都是在判断是否重复,正确的做法应该是,将随机产生的数据,依次跟数组已经存放数据的元素进行比较,如果没有重复的就进行复制,否则提示重新输入。
按照这个思路再试试看。
祝学习愉快!
以下实例可供参考:
创建一个包含10个不重复元素的数组a的实例如下:
for(;;){//循环遍历数组,循环变量i从0开始
int n=生成一个随机数;
//定义boolean类型变量,用来标识生成的随机数与数组元素是否重复,初始值为false
for(;;){//遍历数组,查询随机数n与数组中已有数据的值是否相等,循环条件是j<i
判断n与数组元素是否相等,如果相等,则将flag值赋值为true,并跳出循环
}
//判断flag的值是否为true,如果为true,说明有重复数据,没有给数组元素赋值成功,
//则外重循环的变量i值减1,重新进行循环
//如果flag为false,表示没有重复数据,则将n的值赋值给数组元素a[i]
}
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星