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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵晓波 黑马帝   /  2012-2-28 11:07  /  2157 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Continue {
        public static void main(String[] args) {
       
                for(int i=101;i<=200;i++,i++) {
                        boolean f = true;
                        for(int j = 2;j<i;j++) {
                                if(i%j == 0) {
                                        f = false;
                                        break;
                                }
                        }
                        if(!f) {continue;}
                        System.out.print(" " + i);
                }
        }
}
请大家帮我分析一个
if(!f) {continue;}
System.out.print(" " + i);
这两句话执行的先后顺序

6 个回复

正序浏览
吕猛 黑马帝 2012-2-28 15:42:27
7#
不是 if(boolean)吗!
if()后面的括号里放的是个布尔型的变量。只有true和false两个值。
当boolean 是 true,那么就执行if{}大括号中的语句,如果boolean为false那么就不执行if{}大括号中的语句。

如果放的表达式,其实要的是表达式的值。
比方说,如果里面放的是x==0.当等于1的时候,那么说x=0的肯定是错误的,所以值是false。

你上面那个,f=false的时候,!f 等于!false等于true,那么就执行大括号中的语句。
大括号里面是continue,那么就跳出本次循环,执行下次循环,System.out.print(" " + i)就执行不到了。
回复 使用道具 举报
京泰 发表于 2012-2-28 12:16
如果 (f = false)则(!f)为真,执行continue ,for循环直接执行i++,i++语句;System.out.print(" " + i ...

哥们,谢谢了。我是在最后一个if句那弄不清了。
回复 使用道具 举报
java执行顺序是从下至下的,如果一直continue,就不可能执行下面的语句,要看条件执行,顺序是if肯定在System.out.println()之前
回复 使用道具 举报
楼上解读的很好了
回复 使用道具 举报
本帖最后由 京泰 于 2012-2-28 12:21 编辑
  1.                 for(int i=101;i<=200;i++,i++)
  2.                 {
  3.                         boolean f = true;
  4.                         for(int j = 2;j<i;j++)
  5.                         {
  6.                                 if(i%j == 0)
  7.                                 {
  8.                                         f = false;
  9.                                         break;
  10.                                 }
  11.                         }
  12.                         if(!f)
  13.                                 continue;
  14.                         System.out.print(" " + i);
  15.                 }
复制代码
如果 (f = false)则(!f)为真,执行continue ,for循环直接执行i++,i++语句;System.out.print(" " + i)不执行。
如果(f =true)则(!f)为假,不执行continue,执行System.out.print(" " + i),然后for循环直接执行i++,i++语句。

也就是说:先判断if为真还是为假,是否执行continue语句跳出本次循环,再决定是否执行System.out.print(" " + i)。
回复 使用道具 举报
  1. for(int j = 2;j<i;j++)
  2.                         {
  3.                                 if(i%j == 0)
  4.                                 {
  5.                                          f = false;
  6.                      break;
  7.                 }
  8.              }
  9.                          if(!f)
  10.                          {
  11.                                  continue;
  12.                          }
  13.             System.out.print(" " + i);
复制代码
如果 (f = false)则(!f)为真,执行continue ,for循环直接执行i++,i++语句;System.out.print(" " + i)不执行。
如果(f =true)则(!f)为假,不执行continue,执行System.out.print(" " + i),然后for循环直接执行i++,i++语句。

评分

参与人数 1技术分 +2 收起 理由
老罗 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马