问答详情
源自:7-23 编程练习

求问各位大神,为什么显示不出来sum和平均数aver呢?

<!DOCTYPE  HTML>

<html >

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>系好安全带,准备启航</title>


<script type="text/javascript">

   var d=new Date();

   var y=d.getFullYear();

   var m=d.getMonth();

   var de=d.getDate();

   document.write(y+"年"+m+"月"+de+"日"+"<br/>")

  //通过javascript的日期对象来得到当前的日期,并输出。

 var score=[scoreStr.split(";")];

document.write(score+"<br/>");

  //成绩是一长窜的字符串不好处理,找规律后分割放到数组里更好操作哦

  var scoreStr = "小明:87;小花:81;小红:97;小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";

var sum=0;

 var aver=0;

for(int i=0;i<score.length;i++){

  sum=sum+parseInt(score[i].slice(3,5));

 }

aver=sum/score.length;

document.write(sum);

document.write(parseInt(aver));

  //从数组中将成绩撮出来,然后求和取整,并输出。

</script>

</head>

<body>

</body>

</html>


提问者:qq_笛_0 2016-03-21 16:23

个回答

  • 蝎子126
    2016-03-25 17:28:16

    存在问题:

    (1)var score=[scoreStr.split(";")];document.write(score+"<br/>");应该放在var scoreStr="......";下 面,先定义后使用,否则获得不到scoreStr。

    (2)var score=[scoreStr.split(";")];

            split()是将字符串分割为数组。如果再加一个[],就成了var score=[["item1","item2",..."itemN"]];score变成了一个含有一个数组元素的数组。这样split就没有意义了,,相当于没分割。

    你可以测试一下:

            1)var score=[scoreStr.split(";")]; document.write(score.length);结果:1。

            2)var score=scoreStr.split(";"); document.write(score.length);结果:10。

    (3)楼上很多人已经提出,JS定义类型只有var,它会根据值的类型决定。所以没有int这些。

    (4)月份在JS里是从0开始的,所以getMonth()需要+1才是实际月份。

    (5)代码里没看到你写星期getDay(),注意0代表星期天。

  • SZ_AllenWang
    2016-03-23 21:23:41

    <!DOCTYPE  HTML>

    <html >

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>系好安全带,准备启航</title>


    <script type="text/javascript">


      //通过javascript的日期对象来得到当前的日期,并输出。

      var date=new Date();

      var array=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];

      document.write(date.getFullYear()+"年"+parseInt(date.getMonth()+1)+"月"+date.getDate()+"日"+" "+array[date.getDay()]+"--班级总分为:"+Math.floor(sum/arrays.length));


      

      

      //成绩是一长窜的字符串不好处理,找规律后分割放到数组里更好操作哦

      var scoreStr = "小明:87;小花:81;小红:97;小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";

     var arrays=scoreStr.split(";");

     var sum=0;

    for(var i=0;i<arrays.length;i++){

        sum=sum+parseInt(arrays[i].substr(3,2));

    }

      //从数组中将成绩撮出来,然后求和取整,并输出。

      



    </script>

    </head>

    <body>

    </body>

    </html>


  • SZ_AllenWang
    2016-03-23 21:21:25

    有几点问题:1、var m=d.getMonth();得到的是月份比实际的月份要小1,所以应该改为:var m=parseInt(date.getMonth()+1) 

    2、var score=[scoreStr.split(";")];有误。scoreStr.split(";");本身还回的就是一个数组,不能再加[]。故应改为:var score=[scoreStr.split(";");即可。

    3、for(int i=0;i<score.length;i++)的int改成var。jS声明变量是用var

  • _小白_39
    2016-03-23 20:48:22

    我是来学你们的,我什么都不会,请大神赐教

  • qq_笛_0
    2016-03-21 18:40:17

    哈哈,从java起家的,你要不说我还真没发现.但是把int改成var了之后,sum和aver还是没有呢

  • qq__2587
    2016-03-21 17:05:09

    朋友 注意啊  这是JavaScript 不是Java  你for(int i=0;i<score.length;i++)  其中的Int 是什么鬼  你改成var  包治百病