0

我试图让一个直到循环在 VBS 中工作。我向用户询问一个数字,然后我希望脚本执行直到计数等于用户输入的数字。

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

当我运行它时,它会继续无限循环,而不是在计数等于用户输入的数字后停止。如果我硬编码数字而不是要求它,它可以工作,但当我让用户输入数字时就不行。

有人可以指出为什么会发生这种情况以及我该如何解决?

4

2 回答 2

2

阅读VBScript 语言参考比较运算符 (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

于 2015-03-26T01:54:37.683 回答
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然后循环条件按预期工作。

于 2015-03-26T01:23:22.377 回答