黑马程序员技术交流社区
标题:
实验Random时遇到的问题,求大神分析
[打印本页]
作者:
dreamhunter
时间:
2016-6-4 20:37
标题:
实验Random时遇到的问题,求大神分析
学习Random时,我用switch语句编写了一段小程序,但是其结果与我所预计的不同,第9个数字按我的估计应为三位数,但实际上却不不是。想找大神分析一下为什么。程序代码是:
import java.util.Random; //引用Random包
import java.util.ArrayList; //引用ArrayList包
class Text2_ArrayList {
public static void main(String[] args) {
ArrayList<Integer> arr = new ArrayList<Integer>(); //建立一个整型ArrayList,名为arr
Random n = new Random(); //建立一个随机数n
for (int i = 0;i < 10;i++ ) { //10次循环,i从0开始
switch (i % 3) { //switch判断,判断条件为i对3取余
case 0: //取余为0时
arr.add(n.nextInt());
case 1: //取余为1时
arr.add(n.nextInt(100));
case 2: //取余为2时
arr.add(n.nextInt(1000 - 100) + 100);
default: //其它情况
arr.add(n.nextInt());
}
System.out.println(arr.get(i) + "----" + (i % 3)); //输出随机数以及此时i取余结果
}
}
}
得到的结果为:
-1997018623----0
65----1
226----2
-395861350----0
2----1
517----2
-1834395168----0
122----1
1224993967----2
788441210----0
作者:
18611643318
时间:
2016-6-4 22:43
注释写的挺好的,我想知道你是故意不写break的吗
作者:
dreamhunter
时间:
2016-6-5 09:13
18611643318 发表于 2016-6-4 22:43
注释写的挺好的,我想知道你是故意不写break的吗
算是吧,把defual改为break就正常了,但是,为什么呢?
作者:
车前子008
时间:
2016-6-6 09:33
第9个数 不就是索引为8的数吗? 它的余数不就是0吗? 少一次循环 没有加break 或者continue 用来跳出循环
作者:
TS-松子
时间:
2016-6-6 10:53
第一次循环,从case0到default都要执行,集合里面是4个数
第二次循环,从case1到default,集合里面加了3个数
第三次循环,从case2到default,数组里面加了2个数,
你说的第九个数,是default里面的数加到集合中了,所以就是这个结果了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2