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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

张老师的视频教程 银行业务调度系统
其中的ServiceWindow类,其中有一行代码是要表达处理业务所需时间,要求产生一个1000-10000的随机数,也就是1秒至10秒。
public static int MAX_SERVICE_TIME = 10000;        
public static int MIN_SERVICE_TIME = 1000;
int maxRandom = MAX_SERVICE_TIME - MIN_SERVICE_TIME;
int serviceTime = new Random().nextInt(maxRandom)+1 + MIN_SERVICE_TIME;
据我实验,张老师的这个代码随机生成的数字中不包含1000,只能生成1001-10000;
要想生成1000-10000,必须写成这样
int serviceTime = new Random().nextInt(maxRandom+1) + MIN_SERVICE_TIME;
也就是把1写在括号里面,才能生成1000这个数。
是我错了还是老师代码写错了,求解啊

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 欢迎来到15期~~~~

查看全部评分

3 个回复

倒序浏览
我总结的经验是
A>B 随机生成A和B之间且包含A和B的值
应该这样写 int i = new Random().nextInt(A+1-B)+B;
i即为B-A之间且包含A和B的随机数

回复 使用道具 举报
呵呵……目测是你对了,唉……张老师一天那么累,这是难免的嘛
回复 使用道具 举报
柏占肖 发表于 2012-10-8 20:35
呵呵……目测是你对了,唉……张老师一天那么累,这是难免的嘛

我没说老师讲得不好 张老师讲得很好 只是讨论一下问题 呵呵
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马