黑马程序员技术交流社区

标题: 简单问题 [打印本页]

作者: 赵晓波    时间: 2012-2-28 11:07
标题: 简单问题
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);
这两句话执行的先后顺序
作者: 吕猛    时间: 2012-2-28 12:14
  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++语句。
作者: 吕猛    时间: 2012-2-28 12:16
本帖最后由 京泰 于 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)。
作者: 王--明    时间: 2012-2-28 12:22
楼上解读的很好了
作者: 沈样    时间: 2012-2-28 12:42
java执行顺序是从下至下的,如果一直continue,就不可能执行下面的语句,要看条件执行,顺序是if肯定在System.out.println()之前
作者: 赵晓波    时间: 2012-2-28 13:46
京泰 发表于 2012-2-28 12:16
如果 (f = false)则(!f)为真,执行continue ,for循环直接执行i++,i++语句;System.out.print(" " + i ...

哥们,谢谢了。我是在最后一个if句那弄不清了。
作者: 吕猛    时间: 2012-2-28 15:42
不是 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)就执行不到了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2