日期:2014-05-20  浏览次数:20700 次

想不通一些关于循环的问题(初学)
小弟刚初学java,在看视屏教程,看到一个实在想不通的地方,可能是很弱智问题,请大大耐心看看,谢谢
这是一个输出101 到 200内的质数小程序
我想问的是 红色字体 也就是if (!f) 为啥写成 if (f == false)不行?
如果,是f的反,不就是内部那个for循环终止,也就是f值变为false的情况,continue掉该数,然后大外部循环再抽下个数继续循环这样子嘛?

public class test {
  public static void main (String args[]) {
  for (int i=101; i<200; i+=2) {
  boolean f = true;
  for (int j = 2; j < i; j++) {
  if (i % j == 0) {
  f = false;
  break;
  }
  }
  if (!f) {continue;}
  System.out.print(" " + i);
  }
  }
}

------解决方案--------------------
f是一个标志,当他被设置为true时表示i是质数,当被设置为false是表示不是质数,

是质数就输出,不是就不输出,所以就有这句:

if (!f) {continue;}
System.out.print(" " + i);
}

当f为true时,i是质数,!f为假,不会执行continue,会跳到System.out.print(" " + i);

当f为false时,i不是质数,!f为真,不会执行System.out.print(" " + i),直接进入下次循环