黑马程序员技术交流社区
标题:
while语句的循环问题
[打印本页]
作者:
陈强fly
时间:
2014-12-13 22:09
标题:
while语句的循环问题
本帖最后由 陈强fly 于 2014-12-13 22:14 编辑
class JiOuShuHeDemo
{
public static void main(String[] args)
{
int i=96;
while(i<=101)
{
System.out.println("i="+" "+i);
i++;
}
while(i<=111)
{
if(i%2==0)
{
System.out.println("i="+" "+i);
i++;
}
}
}
编译通过,但运行时为什么是个死循环?
作者:
chudaming213
时间:
2014-12-13 22:10
问什么呢
作者:
zmhlnrs
时间:
2014-12-13 22:11
你这个是想表达什么呢?
作者:
爱卿
时间:
2014-12-13 22:15
这片代码没啥问题啊。 一定要说有问题的话 最后少一个大括号。。
作者:
boycechan
时间:
2014-12-13 22:18
楼主这是想要表达什么呢?
作者:
董晗
时间:
2014-12-13 22:20
当i=102的时候,if (i%2==0)判断条件成立,i++,i=103,符合while(i<=101),接着判断 if(i%2==0)语句,不符合该判断条件。而 i++在 if 语句中,所以此时 i 的值仍是 i=103,无限判断while(i<=101),所以会成死循环。
作者:
爱卿
时间:
2014-12-13 22:22
本帖最后由 爱卿 于 2014-12-13 22:24 编辑
if(i%2==0)
{
System.out.println("i="+" "+i);
i++; //这个i++应该在这个大括号外面 不然 就死循环了
}
作者:
cz萑
时间:
2014-12-13 22:22
第二个while里的if()中i++,要写在if的外面
作者:
陈强fly
时间:
2014-12-13 22:27
爱卿 发表于 2014-12-13 22:22
if(i%2==0)
{
System.out.println("i="+" "+i);
明白了,弄了半天,看着也输出结果,就是会陷入死循环中。
作者:
Honelyboy
时间:
2014-12-13 22:30
第二个while循环里面,但i=奇数时没有自增,条件始终成立。所以死循环。
作者:
Mydream524
时间:
2014-12-14 10:11
少了个括号,第二个循环尾加上continue。
作者:
pj1988
时间:
2014-12-14 10:56
从第一个while循环结束后i==102,当i的值为102时进入第二个while循环,满足条件,然后进入if进行判断为true,再执行if里的内容,当i的值自增为103时,进入第二个while继续判断,满足条件,再次进入if进行判断,结果为false,所以不执行if里的内容,这时,i的值没有任何变化,还是为103,然后103一直在第二个while循环里判断,所以陷入死循环。如果要求1-111之间的偶数,只需把第二个while循环的i++放在if大括号外面,当然,如果求奇数再改变第二个while里if的判断条件为i%2==1就搞定。
作者:
pj1988
时间:
2014-12-14 10:58
从第一个while循环结束后i==102,当i的值为102时进入第二个while循环,满足条件,然后进入if进行判断为true,再执行if里的内容,当i的值自增为103时,进入第二个while继续判断,满足条件,再次进入if进行判断,结果为false,所以不执行if里的内容,这时,i的值没有任何变化,还是为103,然后103一直在第二个while循环里判断,所以陷入死循环。如果要求1-111之间的偶数,只需把第二个while循环的i++放在if大括号外面,当然,如果求奇数再改变第二个while里if的判断条件为i%2==1就搞定。
作者:
chen578157939
时间:
2014-12-14 10:59
第二个判断语句有问题
作者:
I空空
时间:
2014-12-14 11:28
当执行完第一个while循环,i=102会继续执行第二个while循环,此时i=103了;当i=103时,不会执行if里面的语句,所以i的值一直为103,所以不会跳出第二个while循环。把i++写在if语句外面就可以了
作者:
我只是一只菜鸟
时间:
2014-12-14 12:38
因为第二个循环,你i=103的话就一直是103,应该在if外加i++
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2