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

来源:4-9 继续循环continue

qq_菜鸟也是鸟

2016-05-13 12:41

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回答

  • qq_请叫我不靠谱_0
    2016-12-16 15:14:41

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

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

  • 慕娘9282524
    2016-05-13 15:37:12

    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  写在判断语句外面  想我写的那样  这样问题就解决了


    慕娘9282... 回复zhongj...

    这也让大家分清了 for 和 while 的区别 什么时候能用 什么时候不能用

    2016-07-22 15:19:35

    共 7 条回复 >

  • 七八刀
    2016-05-13 13:13:38

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

    九日谈 回复七八刀

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

    2016-08-04 15:56:26

    共 5 条回复 >

  • HxString
    2016-05-13 13:13:25

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

    HxStri... 回复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 15:51:57

    共 4 条回复 >

  • fcpglss
    2016-05-13 13:02:28

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

    qq_菜鸟也...

    难怪老是卡住*-*

    2016-05-13 13:24:15

    共 1 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

469389 学习 · 22585 问题

查看课程

相似问题