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

逻辑没有错,为什么结果奇怪.

<!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 weekend=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];

 document.write(date.getFullYear()+"年"+(date.getMonth()+1)+"月"+date.getDate()+"日"+weekend[date.getDay()]

+"<br>" );

  

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

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

 

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

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


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

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

      var sum=0;

      sum=sum+parseInt(str[i].substr(3));

      }

      sum=sum/str.length

document.write("班级平均成绩为"+sum);


</script>

</head>

<body>

</body>

</html>


正在回答

2 回答

var sum=0;
for(var i=0;i<str.length;i++){
    sum=sum+parseInt(str[i].substr(3));
}

你的问题在这里,你的那个sum不能放到循环里面,放里面的话每一次循环都重新置为0,前面算好的都没有了,最后得到的结果只是最后一个数。

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

庄学爸 提问者

为什么变量在循环里面每次都会置于0? 我是在循环外面定义的,循环里面使用.
2015-11-25 回复 有任何疑惑可以回复我~
for(var i=0;i<str.length;i++){
      var sum=0;
      sum=sum+parseInt(str[i].substr(3));
}

这是你的代码:

当i=0时,执行var sum=0;   sum就等于0,执行 sum=sum+parseInt(str[i].substr(3));  sum = 87;

当i=1时,执行var sum=0;   sum又等于0了,执行 sum=sum+parseInt(str[i].substr(3));  sum = 81;

当i=2时,执行var sum=0;   sum又等于0了,执行 sum=sum+parseInt(str[i].substr(3));  sum = 97;

.......

然后这术一直循环下去,最后sum就会等于最后一个分数,而不是总和。

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

庄学爸 提问者

我var sum不是在外面定义的吗?
2015-11-26 回复 有任何疑惑可以回复我~
#2

李晓健 回复 庄学爸 提问者

你再好好看一眼你上面帖的代码。
2015-11-26 回复 有任何疑惑可以回复我~
#3

庄学爸 提问者 回复 李晓健

好的谢谢
2015-11-26 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

逻辑没有错,为什么结果奇怪.

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