Do Until count 使用 Inputbox 永远不会终止
Do Until count using Inputbox never terminates
我正在尝试让 Do Until 循环在 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
当我运行这个时,它继续无限循环而不是在计数等于用户输入的数字后停止。如果我对数字进行硬编码而不是要求它,它会起作用,但当我让用户输入数字时却不起作用。
谁能指出为什么会发生这种情况以及我该如何解决?
InputBox
正在返回一个字符串。您正在将一个字符串与一个从不匹配的数字进行比较,因此循环。考虑以下变化。
number = Int(InputBox("number"))
count = 1
Do Until count = number
Wscript.Echo "count: " & count & VbCrLf & "number: " & number
count = count + 1
Loop
我正在用这个做no数据验证。只是想向您展示问题。我们将 InputBox
的结果转换为 int
然后循环条件按预期工作。
阅读VBScript 语言参考,Comparison Operators (VBScript):
If one expression is numeric and the other is a string then the
numeric expression is less than the string expression.
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
中的 >=
比较所做的更改。
我正在尝试让 Do Until 循环在 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
当我运行这个时,它继续无限循环而不是在计数等于用户输入的数字后停止。如果我对数字进行硬编码而不是要求它,它会起作用,但当我让用户输入数字时却不起作用。
谁能指出为什么会发生这种情况以及我该如何解决?
InputBox
正在返回一个字符串。您正在将一个字符串与一个从不匹配的数字进行比较,因此循环。考虑以下变化。
number = Int(InputBox("number"))
count = 1
Do Until count = number
Wscript.Echo "count: " & count & VbCrLf & "number: " & number
count = count + 1
Loop
我正在用这个做no数据验证。只是想向您展示问题。我们将 InputBox
的结果转换为 int
然后循环条件按预期工作。
阅读VBScript 语言参考,Comparison Operators (VBScript):
If one expression is numeric and the other is a string then the numeric expression is less than the string expression.
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
中的 >=
比较所做的更改。