我试图在VBS中使用Do Until循环。我向用户询问一个数字,然后我希望脚本执行直到计数等于用户输入的数字。
number = InputBox("number")
count = 1
Do Until count = number
Wscript.Echo "count: " & count & VbCrLf &_
"number: " & number
count = count + 1
Loop
Wscript.Echo "Done." & VbCrLf &_
"count: " & count & VbCrLf &_
"number: " & number
当我运行它时,它会无限循环而不是在计数等于用户输入的数字后停止。如果我对数字进行硬编码而不是要求编号,那么它可以正常工作,但是当我让用户输入数字时却不行。
有人可以指出为什么会发生这种情况以及如何解决这个问题?
答案 0 :(得分:2)
阅读 VBScript语言参考,Comparison Operators (VBScript):
如果一个表达式是数字而另一个是字符串,那么 数值表达式小于字符串表达式。
count = 1
number = InputBox("number")
if IsNumeric( number) then number = CInt( number) else number = count
Do Until count >= number
Wscript.Echo "count: " & count & VbCrLf &_
"number: " & number
count = count + 1
Loop
Wscript.Echo "Done." & VbCrLf &_
"count: " & count & VbCrLf &_
"number: " & number
请注意=
中>=
与Do Until count >= number
的比较所做的更改。
答案 1 :(得分:0)
InputBox
正在返回一个字符串。您正在将字符串与从不匹配的数字进行比较,从而将循环进行比较。考虑以下变化。
number = Int(InputBox("number"))
count = 1
Do Until count = number
Wscript.Echo "count: " & count & VbCrLf & "number: " & number
count = count + 1
Loop
我正在使用此进行 否 数据验证。只是想告诉你这个问题。我们将InputBox
的结果转换为int
,然后循环条件按预期工作。