51Testing软件测试论坛

标题: 请问这段VBS代码那错了???? [打印本页]

作者: vvvv_vvvv    时间: 2011-4-29 10:34
标题: 请问这段VBS代码那错了????
dim a,b,c,msga,msgb
msga="请输入数值a"
a=inputbox(msga)
msgb="请输入数值b"
b=inputbox(msgb)
a=int(a)
b=int(b)
c=a*b
if a="" or b="" then
msgbox("a或b值不能为空")
else
msgbox(c)
endif
作者: vvvv_vvvv    时间: 2011-4-29 10:41
最后的end if没有空格

如果我直接不输入按确定,代码还是报错。
作者: vvvv_vvvv    时间: 2011-4-29 11:00
不输入值报STRING NULL,高手看看
作者: renquande    时间: 2011-4-29 11:16
endif 变成end if即可(end和if加空格)
作者: renquande    时间: 2011-4-29 11:27
dim a,b,c,msga,msgb,x,y
msga="请输入数值a"
x=inputbox(msga)
msgb="请输入数值b"
y=inputbox(msgb)
if a="" or b="" then
msgbox("a或b值不能为空")  
else
a=Cint(x)
b=Cint(y)
c=a*b
msgbox(c)
end if


刚才没看详细,这样就没问题了
作者: vvvv_vvvv    时间: 2011-4-29 11:34
CInt 函数可把表达式转换为整数(Integer)类型。

注释:值必须是介于 -32768 与 32767 之间的数字。

注释:CInt 不同于 Fix 和 Int 函数删除数值的小数部分,而是采用四舍五入的方式。 当小数部分正好等于 0.5 时, CInt 总是将其四舍五入成最接近该数的偶数。例如, 0.5 四舍五入为 0, 以及 1.5 四舍五入为 2.
作者: vvvv_vvvv    时间: 2011-4-29 11:40
谢谢了
没理解为什么多 X Y值
作者: renquande    时间: 2011-4-29 11:42
回复 6# vvvv_vvvv


   没看明白你什么意思,现在关键是有没有解决你的问题,有个结论性的东西,方便其他人看帖的时候有个结论
作者: vvvv_vvvv    时间: 2011-4-29 11:48
程序主要是判断 a*b的值

错误判断为 A B值不为空或字符
作者: renquande    时间: 2011-4-29 11:51
回复 9# vvvv_vvvv


   崩溃中,现在需要知道,这样能不能满足你的需求,还报错吗,结论性的东西
作者: renquande    时间: 2011-4-29 11:52
测了一下,还是不对,不好意思
作者: vvvv_vvvv    时间: 2011-4-29 11:53
dim a,b,c,msga,msgb,x,y
msga="请输入数值a"
a=inputbox(msga)
msgb="请输入数值b"
b=inputbox(msgb)
if a="" or b="" then
msgbox("a或b值不能为空或字符")  
else
a=int(a)
b=int(b)
c=a*b/2
msgbox(c)
end if
作者: vvvv_vvvv    时间: 2011-4-29 11:53
请问字符怎么判断啊,是不是有表达式
作者: renquande    时间: 2011-4-29 11:55
dim a,b,c,msga,msgb,x,y
msga="请输入数值a"
x=inputbox(msga)
msgb="请输入数值b"
y=inputbox(msgb)
if x="" or y="" then
msgbox("a或b值不能为空")  
else
a=Cint(x)
b=Cint(y)
c=a*b
msgbox(c)
end if

现在呢,再看一下
作者: renquande    时间: 2011-4-29 11:56
我不是太熟悉VBS的语法,只是通过经验调试了一下
作者: vvvv_vvvv    时间: 2011-4-29 12:07
这样对字符没有控制 如果输入 ABCD 或中文就会报错
作者: vvvv_vvvv    时间: 2011-4-29 14:17
dim a,b,c,msga,msgb
Do
m=1
msga="请输入数值a"
a=inputbox(msga)
If IsNumeric(a) Then
  a = CDbl(a)
  If a<0 Then
   m = MsgBox("输入数值大于0!",5)
  End If
Else
  m = MsgBox("输入数值大于0!",5)
End If
If m = 2 Or m = 0 Then
  WScript.Quit
End If  
Loop While m=4
Do
m = 1
msgb="请输入数值b"
b=inputbox(msgb)
If IsNumeric(b) Then
  b = CDbl(b)
  If b<0 Then
   m = MsgBox("输入数值大于0!",5)
  End If
Else
  m = MsgBox("输入数值大于0!",5)
End If
If m = 2 Or m = 0 Then
  WScript.Quit
End If  
Loop While m=4
Randomize
c=a*b/2
msgbox(c)
作者: 偶爱台球    时间: 2011-5-4 14:21
dim a,b,c,msga,msgb
msga="请输入数值a"
a=inputbox(msga)
msgb="请输入数值b"
b=inputbox(msgb)
a=int(a)
b=int(b)
c=a*b   ----------------------------------------程序走到这就要算a*b的值了,你不输入肯定会报错的
if a="" or b="" then
msgbox("a或b值不能为空")
else
msgbox(c)
endif
作者: jiazurongyu    时间: 2011-5-10 21:43
dim a,b,c,msga,msgb
....
a=Cint(a)
b=Cint(b)
作者: hellenchen    时间: 2011-5-12 10:02
dim a,b,c,msga,msgb,y
y=0
do while y=0
msga="请输入数值a"
a=inputbox(msga)
msgb="请输入数值b"
b=inputbox(msgb)
if IsNumeric(a) and IsNumeric(b) then
a=int(a)
b=int(b)
c=a*b
msgbox(c)
y=1
else
msgbox("a或b值输入非数字型字符,请重新输入")
end if
loop
不知这个结果是不是你想要的
作者: shanfeng1419    时间: 2011-5-13 09:14
20#方法不错。
作者: hwm831002    时间: 2011-5-13 15:54
回复 20# hellenchen

运行了下还是有错
作者: arthas.gong    时间: 2011-5-14 16:37
dim a,b,c,msga,msgb
msga="请输入数值a"
a=inputbox(msga)
msgb="请输入数值b"
b=inputbox(msgb)
a=i ...
偶爱台球 发表于 2011-5-4 14:21


支持这种说法,有没有人设置断点调试过啊?
作者: datouniuniu    时间: 2011-5-19 15:46
求教了老公大人,正解为:


Dim a,b,c,msga,msgb
msga="input a"
msgb="input b"
a=InputBox(msga)
b=inputbox(msgb)

If Trim(a)="" Or Trim(b)="" then
      MsgBox "a or b must be not null"
Else
     c=a*b
     MsgBox c
End If
作者: datouniuniu    时间: 2011-5-19 16:12
如果还要排除a和b为字符型的情况,代码也可以这么写:

Dim a,b,c,msga,msgb
msga="请输入a:"
msgb="请输入b:"
a=InputBox(msga)
b=InputBox(msgb)

If Trim(a)="" Or Trim(b)="" then
   MsgBox "a或者b不能为空"
ElseIf IsNumeric(a) And IsNumeric(b) then
   c=a*b
   MsgBox c
Else
   MsgBox "请输入数字"
End if
作者: hellenchen    时间: 2011-5-20 14:43
回复 22# hwm831002

我运行了.. 通过了,不知这位大侠说的有错是什么错呢?可否详细些?
作者: jeanlolo    时间: 2011-5-31 18:18
关键看调试的需求是什么?有什么要求,满足要求就行。要不调试没方向。
作者: cainiaolaile    时间: 2011-6-9 17:02
Dim a,b,c,msga,msgb
msga="Please input a"
a=InputBox(msga)
msgb="Please input a"
b=InputBox(msgb)
If a="" Or b="" then
MsgBox("a and b can not null!")
Else
a=Int(a)
b=Int(b)
c=a*b
MsgBox c
End If
我的这段




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2