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

本帖最后由 qaws5052 于 2016-4-27 01:19 编辑

private static void demo01() {
                //循环100以内的数
                for (int n = 1; n <= 100; n++) {
                //给b初始值true       
                boolean b = true;
                //如果循环拿到的数n不等于1,就进入下面的循环
                if (n != 1) {
                        //i从大于1的第一个数也就是2开始,依次循环到比这个数n本身小的最大的数
                        //何为质数,除了1和他本身不能再被其他数整除.所以...这样循环
                        for (int i = 2; i < n; i++) {
                                if (n % i == 0) { //如果取余为0,也就是说,除了1和其本身有其他数可以整数它,所以置为false
                                        b = false;
                                        //跳出当前循环,判断是否打印,并且到外面循环继续
                                        break;
                                }
                        }
                }
                if (b) {
                        System.out.println(n + "是质数");
                }
                /*
                 * 这段代码有疑问:
                        for (int i = 2; i < n; i++){
               if (n % i == 0){
                               b = false;
                              break;
              }
                        既然当n % i == 0 的时候就是false,即退出了for loop,
                        那么一开始i = 2的时候n % i == 0 也是成立的,
                        那么b也就为false了,但为啥最后输出结果里面还有2呢?
                 * */

                }
        }

17 个回复

倒序浏览
一开始符合i<n的条件么,你的i 取2的时由于你的条件限制,n取不到2
回复 使用道具 举报
后面的过程依然继续执行
回复 使用道具 举报
dtmacg 发表于 2016-4-27 10:34
后面的过程依然继续执行

额.能说清楚点不咯
回复 使用道具 举报
for (int i = 2; i < n; i++)
n也是2  2不小于2啊
回复 使用道具 举报
表示2<2为false 会不走循环直接走下面的代码。
回复 使用道具 举报
top        
回复 使用道具 举报
前排 看看。跳出循环后  if(b)不包括在跳出的循环,所以后面还会执行呀
回复 使用道具 举报
dtmacg 中级黑马 2016-4-28 20:45:35
9#
qaws5052 发表于 2016-4-27 11:48
额.能说清楚点不咯

判断2<2? 你仔细看下 下次再遇到这种问题 自己用eclipse的deBUG运行下就明白了
回复 使用道具 举报

deBUG 不熟
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
加油加油加油加油加油加油
回复 使用道具 举报
都是大神
回复 使用道具 举报

so.解决了吧。。
回复 使用道具 举报
class ZhiShu
{
        public static void main(String[] args)
        {
                for(int i = 2;i < 1000;i++)
                {
                        boolean a = true;
                        for(int j = 2;j < i;j++)
                        {
                                if(i % j == 0)
                                {
                                        a = false;
                                        break;
                                }
                        }
                        if(a)
                                System.out.print(i+" ," );
                }
        }
}
回复 使用道具 举报
n是取不到2的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马