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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

学习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


4 个回复

倒序浏览
注释写的挺好的,我想知道你是故意不写break的吗
回复 使用道具 举报
18611643318 发表于 2016-6-4 22:43
注释写的挺好的,我想知道你是故意不写break的吗

算是吧,把defual改为break就正常了,但是,为什么呢?
回复 使用道具 举报
第9个数 不就是索引为8的数吗? 它的余数不就是0吗?  少一次循环  没有加break 或者continue 用来跳出循环
回复 使用道具 举报
第一次循环,从case0到default都要执行,集合里面是4个数
第二次循环,从case1到default,集合里面加了3个数
第三次循环,从case2到default,数组里面加了2个数,
你说的第九个数,是default里面的数加到集合中了,所以就是这个结果了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马