java:把for改成while语句后出错,求解释

[复制链接]
查看11 | 回复5 | 2010-8-22 21:06:45 | 显示全部楼层 |阅读模式
//输出100-200内的质数
public class testContinue2 {
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);
}
}
}
---------------------------------------以下是改成while的
public class testContinue2 {
public static void main ( String args[] ) {
int i =101;
while ( i < 200 ) {
boolean f = true;
for (int j = 2; j < i; j++ ) {

if (i % j == 0) {

f = false;

break;

}
}
if (!f) {continue;}
System.out.print(" " + i);
i += 2;
}
}
}
while的显示了101、103之后就卡死了,估计死循环了

回复

使用道具 举报

千问 | 2010-8-22 21:06:45 | 显示全部楼层
if (!f) {continue;}这句让你的i在非质数的情况下不执行i+=2; 把你的i+=2;写到这句之前。
回复

使用道具 举报

千问 | 2010-8-22 21:06:45 | 显示全部楼层
用了while 之后,由于 i已经被你赋值了,它会不停的执行while ( i < 200 ) {里面的内容的
回复

使用道具 举报

千问 | 2010-8-22 21:06:45 | 显示全部楼层
悲剧
回复

使用道具 举报

千问 | 2010-8-22 21:06:45 | 显示全部楼层
说简单点吧,if (!f) {continue;}执行完后i没有加2,所以i一直在105处进行死循环,懂么~~
回复

使用道具 举报

千问 | 2010-8-22 21:06:45 | 显示全部楼层
你可以Debug一下,就全明白了~~~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行