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

分割字符串得到个人数据的数组,提取子字符串转化为整数,求出平均数。无法正确实现?

<!DOCTYPE  HTML>
<html >
 <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <title>系好安全带,准备启航</title>
   <script type="text/javascript">
     //通过javascript的日期对象来得到当前的日期,并输出。
     var mydate = new Date();
  var myyear = mydate.getFullYear();  //年
  var mymonth = mydate.getMonth() + 1;  //月
  var myday = mydate.getDate();  //日
  var myweek = mydate.getDay();  //星期
     var myweek2 = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
  document.write(myyear + "年" + mymonth + "月" + myday + "日 " + myweek2[myweek]);
 
     //成绩是一长窜的字符串不好处理,找规律后分割放到数组里更好操作哦
     var scoreStr = "小明:87;小花:81;小红:97;小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";
     var personInfo = scoreStr.split(";");    
     
     //从数组中将成绩撮出来,然后求和取整,并输出。
     for(var n = 0; n < personInfo.length; n++){
var personScore, sum=0;
personScore = parseInt(personInfo[n].substring(personInfo[n].(indexOf(":")+1)));
sum += personScore[n];
  }
  var aver = Math.round(sum/personInfo.length);
 document.write("--平均分是:" + aver);
   </script>
 </head>
 <body>
</body>
</html>


提问者:Just90 2016-02-01 16:01

个回答

  • dg英灵
    2016-02-01 17:48:39
    已采纳

    <!DOCTYPE  HTML>

    <html >

    <head>

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

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


    <script type="text/javascript">


     var mydate=new Date();//通过javascript的日期对象来得到当前的日期,并输出。

      var myyear=mydate.getFullYear();

      var mymonth=mydate.getMonth();

      var myday=mydate.getDate();

      var mynum=mydate.getDay();

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

      document.write(myyear+"年"+mymonth+"月"+myday+"日"+" "+myweek[mynum]+"<br>");

      

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

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

      var myarr=new Array();

      myarr=scoreStr.split(";");

      document.write(myarr+"<br>");

      var sum=0;

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

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

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

      document.write(Math.ceil(sum)+"<br>");

      var aver=Math.round(sum/myarr.length);

      document.write(aver);

    </script>

    </head>

    <body>

    </body>

    </html>


  • JoeyQian
    2016-02-01 18:07:47

    <!DOCTYPE  HTML>
    <html >
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>系好安全带,准备启航</title>
    
    <script type="text/javascript">
    //计算平均分数
    function getAverage(sumNum,aCount){
        return sumNum/aCount;
    }
    //计算分数的总和
    function getSumByArr(arr){
        var ret = 0;
        for(var i=0;i<arr.length;i++){
            var obj = arr[i].split(":")[1];
            ret = ret + parseInt(obj);
        }
        return ret;
    }
     var mydate=new Date();//通过javascript的日期对象来得到当前的日期,并输出。
      var myyear=mydate.getFullYear();
      var mymonth=mydate.getMonth();
      var myday=mydate.getDate();
      var mynum=mydate.getDay();
      var myweek=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
      document.write(myyear+"年"+mymonth+"月"+myday+"日"+" "+myweek[mynum]+"<br>");
      //成绩是一长窜的字符串不好处理,找规律后分割放到数组里更好操作哦
      var scoreStr = "小明:87;小花:81;小红:97;小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";
    var scoreArr = scoreStr.split(";");
      //从数组中将成绩撮出来,然后求和取整,并输出。
      var sumObj = getSumByArr(scoerArr);
      document.write(getAverage(sumObj,scoreArr.length));
    </script>
    </head>
    <body>
    </body>
    </html>

    我是这样写的 感觉把一些代码拆成一个个函数,这样思路会比较清晰

  • HenryChou
    2016-02-01 17:09:48

    <!DOCTYPE  HTML>
    <html >
     <head>
       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
       <title>系好安全带,准备启航</title>
       <script type="text/javascript">
         //通过javascript的日期对象来得到当前的日期,并输出。
         var mydate = new Date();
     	var myyear = mydate.getFullYear();  //年
     	var mymonth = mydate.getMonth() + 1;  //月
     	var myday = mydate.getDate();  //日 
     	var myweek = mydate.getDay();  //星期
         var myweek2 = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
     	document.write(myyear + "年" + mymonth + "月" + myday + "日 " + myweek2[myweek]);
     
         //成绩是一长窜的字符串不好处理,找规律后分割放到数组里更好操作哦
         var scoreStr = "小明:87;小花:81;小红:97;小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";
         var personInfo = scoreStr.split(";");    
         //document.write(personInfo+"<br>");
         //从数组中将成绩撮出来,然后求和取整,并输出。
        var sum=0;
         for(var n = 0; n < personInfo.length; n++){
          var personScore;
          personScore = parseInt(personInfo[n].substr(personInfo[n].indexOf(":")+1));
          sum += personScore;
        }
        var aver = Math.round(sum/personInfo.length);
        document.write("--平均分是:" + aver);
       </script>
     </head>
     <body>
    </body>
    </html>

    嗯,有点遗憾,有几处错误,sum要在循环外面赋值,在for里面赋值会导致每次循环都归零的;

    是(personInfo[n].indexOf.()+1),整体加1,你那样写是没有含义的

    personScore初始不是一个数组,而是每次循环得到个人分数(函数内的中间变量),不能加【n】,在你这里只是起到传递分数值给sum的作用