2 ssaypiano ssaypiano 于 2013.12.12 22:57 提问

用javascript实现从1加到100的和,代码出错

农民工自学JS,谦卑地向各位请教,

 start=prompt("请输入开始的值:");

 end=prompt("请输入结束的值:");

 alert("开始的值是:"+start);

 alert("结束的值是:"+end);

 alert("从"+start+"+到"+end+"的和="+sum);

   var sum=0
   if (start≤end)
   sum+=start++    

假如去掉最后三行代码,并且倒数第四行alert中的字符串结尾处,去掉+sum,程序是按照设想进行:

提示输入开始值-提示输入结束值-确认开始值-确认结束值-弹出alert对话框

加入最后三行代码,浏览器什么都不显示了,

已经折腾一晚上了,请会的朋友指点一下,万分感谢!    

5个回答

huangjinhe007
huangjinhe007   2013.12.13 11:39
已采纳

首先,要先进行变量的声明然后才能使用该变量。所以, var sum=0 要写在 alert("从"+start+"+到"+end+"的和="+sum); 其次,既然是要实现从1加到100,那么就需要用到循环了,单纯的if判断相加是不可以的,需要用到循环来进行相加。循环又包括for、while和 do while几种,每种都可以做到循环只是循环的条件不同,你可以查看一下这方面的资料。在这里如果用for循环实现的话可以这么写:
start=start*1;end=end*1;
//定义一个中间变量n用于进行计算。
for(var n=start;n<=end;n++)
{

sum=sum+n;
}
这个之所以start和end都乘1是因为prompt返回的是一个字符串如果直接相加就变成了字符串相加了会得到一大串字符而不是想要的数字,如:'1'+'100'得到的结果是'1100'而不是101,通过乘1可以简单地把字符串类型的数字转换成数字,这样就可以再进行相加的操作了。最后得到的sum的值就是你想要的结果。还有一点,在程序当中‘≤’是用‘<=’表示,‘≥’用‘>=’表示,等于是‘==’,不等于是‘!=’。
最后要说的是,为了养成良好的编程习惯要注意标点符号的使用如结尾用分号“;”等,在一些编程语言中没有';'结尾会报错的。

start=prompt("请输入开始的值:");

end=prompt("请输入结束的值:");

alert("开始的值是:"+start);

alert("结束的值是:"+end);
var sum=0;
start=start*1;end=end*1;

for(var n=start;n<=end;n++)
{
sum=sum+n;
}
alert("从"+start+"+到"+end+"的和="+sum);

ssaypiano
ssaypiano huangjinhe007网友你好,真的很感谢你!你等于帮我仔细地梳理了一遍头绪,还强调了一些编程中的概念。这些要全靠我自己悟,那要花很多的时间,时间倒是其次,很可能信心被打击没了;真的很感谢你!希望此贴也能为其他的javascript初学者有所帮助
接近 4 年之前 回复
ssaypiano
ssaypiano   2013.12.22 16:07

感谢huangjinhe007的热心帮助,感谢鹳狸媛的关于√功能按钮的提示;

这个帖子是很多天前的提问,今天学习JS基础知识中“表达式和运算符”章节时,看到关于一元运算符“+”的描述:把操作数转换为数字或者NaN,并返回转换后的数字;

于是,我把huangjinhe007网友给的代码中:

start=start*1;
end=end*1;

修改为:

start=+start;
end=+end;

虽然两种代码都可正常运行,但我想,这里使用一元操作符“+”,还是更贴近程序设计思路吧

ssaypiano
ssaypiano 我试了,start=+prompt();可以运行,这无疑让程序更精炼了,多谢指点,我经验值又增加了^_^
接近 4 年之前 回复
huangjinhe007
huangjinhe007 呵呵,我也才知道还可以这么写,看来基础方面我也需要加强了。根据你说的我试了一下,觉得如果单纯想要转换成数字的话那么可以省略:start=+start; end=+end;这两句了,直接写成:start=+prompt("请输入开始的值:"); end=+prompt("请输入结束的值:");就可以了,不知道你发现没有。
接近 4 年之前 回复
ming2233min
ming2233min   2013.12.13 08:51

可以用 alert()对代码 一点一点 调试嘛,看程序 在哪一步出错了。

a_liujian
a_liujian   2013.12.13 09:19

js代码从上至下执行,你的sum定义在alert(""+sum)后面 肯定不行的!

ssaypiano
ssaypiano   2013.12.13 10:56

首先,自己先检查出了第一个问题,

javascript中没有≤这个操作符,小于等于操作符正确的写法应为:<=

Csdn user default icon
上传中...
上传图片
插入图片