Vbscript 数字和程序,得到错误答案

Vbscript 数字和程序,得到错误答案,vbscript,asp-classic,Vbscript,Asp Classic,我已经使用querystring在我的经典asp代码中接受数字,然后程序将输出数字的位数总和 <% dim n,d,sum sum = 0 d = 0 n = request.querystring("n") //Taking value from querystring while n<>0 d = n mod 10 response.write("<br>"&d) sum = sum + d`` n = Cint(n/10) wend response

我已经使用querystring在我的经典asp代码中接受数字,然后程序将输出数字的位数总和

<%
dim n,d,sum
sum = 0
d = 0
n = request.querystring("n")  //Taking value from querystring
while n<>0
d = n mod 10
response.write("<br>"&d)
sum = sum + d``
n = Cint(n/10)
wend
response.write("<br>Sum of digits of "&request.querystring("n")&" is : 
"&sum)
%>

但问题是,对于像这样的少数值,它并没有给出正确的答案 例如,n=91……则输出为11 但对于n=123…输出将为6。
请帮助。

将n视为字符串可能更容易,因为它实际上是一个字符数组。因为字符串是一个字符数组,所以我们可以在数组中循环并对每个值求和

Dim n, d, sum
sum = 0
d = 0
n = Request.QueryString("n")
If IsNumeric(n) Then
    For i = 1 To Len(n)
        d = CInt(Mid(n,i,1))
        Response.Write("<br />" & d)
        sum = sum + d
    Next
    Response.Write("<br />Sum of digits of " & n & " is : " & sum)
End If
尺寸n、d、和
总和=0
d=0
n=请求.查询字符串(“n”)
如果是数字(n),则
对于i=1到Len(n)
d=CInt(中间(n,i,1))
响应。写入(“
”&d) sum=sum+d 下一个 响应。写入(“&n&”的位数之和为:“&Sum”) 如果结束
只需对代码进行一次更改,即使用操作符\而不是/ 当你减少你的人数

i、 e.使用n=n\10代替n=CInt(n/10)

因此,代码可以很好地工作:

<%
dim n,sum,d
sum = 0
n = request.querystring("n")    'taking value from querystring

while n <> 0
d = n mod 10
sum = sum +d
n = n\10                       'using \ for integer division
wend
response.write("Sum of digits of : "&request.querystring("n")&" is = "&sum)
%>

对于那些不了解刚刚发生的事情的人,请参见以下内容:

  • 运算符/:执行浮点除法
  • 运算符\:执行整数除法
  • 这就是为什么我没有得到正确的结果。
    希望这有帮助

    回答得好。在经典asp中,注释可以以//开头,或者对于带有VBScript的注释,注释必须以“?仅
    开头;不过,你可以将JavaScript作为一种语言与经典的ASP结合使用。非常感谢你,伙计。你太棒了@实际上,你不能使用JavaScript,这是一个常见的误解。您可以使用JScript,它是一种由Microsoft开发的、基于旧版本ECMAScript的活动脚本语言。