为了账号安全,请及时绑定邮箱和手机立即绑定

老师这样写有啥不对?请指导哈

var arr=[80,96,75,50,60,100,92,50,62];

var i=0;

while(i<arr.length)

{

if(arr[i]<70)

{

document.write("成绩不好,不输出。"+"<br>");

continue;

}

document.write("成绩是:"+arr[i]+"<br>");

i=i+1;

}


正在回答

5 回答

不知道过了这么长时间你是不是早就弄明白了,我学到这里理解的是

for后面()里填入了初始值、判断循环条件,循环迭代三个条件,所以循环语句{}里只填上所需要执行的循环就可以,而while后面的()里只有判断循环条件,所以while的初始值要提前说明,while的循环语句{}里需要加上循环迭代,否则初始值一直不能增减不能满足跳出循环的条件就陷入了死循环。

0 回复 有任何疑惑可以回复我~

var arr=[80,96,75,50,60,100,92,50,62];

var i=0;

while(i<arr.length)

{

if(arr[i]<70)

{

document.write("成绩不好,不输出。"+"<br>");

continue;

}

else{

document.write("成绩是:"+arr[i]+"<br>");

}

i=i+1;

}

造成死循环的原因  如楼上所说   解决方法就是  把i=i+1  写在判断语句外面  想我写的那样  这样问题就解决了


2 回复 有任何疑惑可以回复我~
#1

慕娘9282524

你没发现你那样写的程序 只有在成绩大雨70的情况下 i=i+1 才会被执行吗?
2016-05-13 回复 有任何疑惑可以回复我~
#2

qq_菜鸟也是鸟 提问者 回复 慕娘9282524

没仔细分析………………
2016-05-13 回复 有任何疑惑可以回复我~
#3

qq_菜鸟也是鸟 提问者

Thanks
2016-05-13 回复 有任何疑惑可以回复我~
#4

CharlesLvm

你写得和楼主并没有区别,还是错的,还好意思说像你那样做就解决了
2016-07-13 回复 有任何疑惑可以回复我~
#5

慕娘9282524 回复 CharlesLvm

哈哈 被发现了
2016-07-17 回复 有任何疑惑可以回复我~
#6

zhongjing

复制黏贴、运行、然后浏览器卡死,死循环!!你这代码.....
2016-07-21 回复 有任何疑惑可以回复我~
#7

慕娘9282524 回复 zhongjing

这也让大家分清了 for 和 while 的区别 什么时候能用 什么时候不能用
2016-07-22 回复 有任何疑惑可以回复我~
查看4条回复

你的问题出在continue. continue的用法是跳过这次循环还未执行的语句开始一次新的循环。你这里一旦碰到一个小于70的情况(你这里是第四个元素:50)到continue就直接回去再循环一次,但是i+1又没有执行,也就是说你又重新判断第四个元素。所以,您这个程序就停在了50这里,所以就死掉了。不要用while,用for

6 回复 有任何疑惑可以回复我~
#1

qq_菜鸟也是鸟 提问者

为啥用for就可以了呢?郁闷,for,while的区别在哪?
2016-05-13 回复 有任何疑惑可以回复我~
#2

七八刀 回复 qq_菜鸟也是鸟 提问者

for每次循环开始的时候都会加一,所以不会卡在一个元素跳不过去。比如你第一个50判断完成回去再循环,for语句是先执行i++,再执行循环体里面的语句。但是你用while就永远执行不到i++,就一直纠结在一个元素。
2016-05-13 回复 有任何疑惑可以回复我~
#3

qq_菜鸟也是鸟 提问者 回复 七八刀

我慢慢研究哈,谢谢亲的指导
2016-05-15 回复 有任何疑惑可以回复我~
#4

CharlesLvm 回复 qq_菜鸟也是鸟 提问者

或者你可以把i++调到if判断之前
2016-07-13 回复 有任何疑惑可以回复我~
#5

九日谈 回复 七八刀

用for 也只会是死循环,这里的问题在于i++并没有加上去,因为一旦有一个元素小于70,执行continue就跳出了此次循环,但i的值并没有加1(因为i=i+1在循环体里面并且在continue的后面),所以下次仍然是这个小于70的元素进行判断,陷入了死循环。 正确的做法是把i++加到前面去
2016-08-04 回复 有任何疑惑可以回复我~
查看2条回复

while(i<arr.length-1) 就好

0 回复 有任何疑惑可以回复我~
#1

qq_菜鸟也是鸟 提问者

木有用啊
2016-05-13 回复 有任何疑惑可以回复我~
#2

HxString 回复 qq_菜鸟也是鸟 提问者

楼下正解,,我错了,看错了!!
2016-05-13 回复 有任何疑惑可以回复我~
#3

qq_菜鸟也是鸟 提问者 回复 HxString

能告诉我for与while的区别吗?为啥一样的条件for就不会死循环呢
2016-05-13 回复 有任何疑惑可以回复我~
#4

HxString 回复 qq_菜鸟也是鸟 提问者

你可以在这里加一条语句 document.write("成绩不好,不输出。"+"<br>"); i += 1;//这是新加的语句 continue; 当遍历到第4个元素的时候 i= 3;arr[i] = 50 < 70;按照之前的代码的话,执行到{ document.write("成绩不好,不输出。"+"<br>"); continue; }这里时 就开始下一次循环,下面的代码也不会得到执行,所以 i 的值不会加 一 ,还是 i=3;这样就会照成死循环啦! for 和 while 可以相互 转换
2016-05-13 回复 有任何疑惑可以回复我~
查看1条回复

i的值不可能大过arr.length 所以死循环了

1 回复 有任何疑惑可以回复我~
#1

qq_菜鸟也是鸟 提问者

难怪老是卡住*-*
2016-05-13 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

老师这样写有啥不对?请指导哈

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信