黑马程序员技术交流社区

标题: 实验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