Vb.net 验证数据输入
这似乎是一种验证数据输入的糟糕方法。我发现自己做了很多事情。有没有办法合并或简化这些程序 副标题() 下面是两个看起来过于复杂的潜艇:Vb.net 验证数据输入,vb.net,validation,Vb.net,Validation,这似乎是一种验证数据输入的糟糕方法。我发现自己做了很多事情。有没有办法合并或简化这些程序 副标题() 下面是两个看起来过于复杂的潜艇: Sub IsNumeric(ByRef Variable As Integer) While True Try Variable = CInt(Console.ReadLine()) Exit While Catch Console.Writ
Sub IsNumeric(ByRef Variable As Integer)
While True
Try
Variable = CInt(Console.ReadLine())
Exit While
Catch
Console.WriteLine("Error: Please enter a number:")
End Try
End While
End Sub
Sub Validate(ByVal Variable As Integer, ByVal LandscapeSize As Integer)
Dim Size As Integer
Size = (LandscapeSize * LandscapeSize)
While Variable <= 0 Or Variable >= Size
Console.WriteLine("Error: Please enter a number:")
While True
Try
Variable = CInt(Console.ReadLine())
Exit While
Catch
Console.WriteLine("Error: Please enter a number:")
End Try
End While
End While
End Sub
Sub-IsNumeric(ByRef变量为整数)
虽然是真的
尝试
变量=CInt(Console.ReadLine())
退出时
抓住
Console.WriteLine(“错误:请输入一个数字:”)
结束尝试
结束时
端接头
子验证(ByVal变量为整数,ByVal LandscapeSize为整数)
将大小设置为整数
大小=(景观大小*景观大小)
而变量=大小
Console.WriteLine(“错误:请输入一个数字:”)
虽然是真的
尝试
变量=CInt(Console.ReadLine())
退出时
抓住
Console.WriteLine(“错误:请输入一个数字:”)
结束尝试
结束时
结束时
端接头
非常感谢因此请重命名IsNumeric。。
改用TryParse摆脱try-catch
Sub ReadNumber(ByRef Variable As Integer)
Do
If Integer.TryParse(Console.ReadLine(), variable) Then Exit Sub
Console.WriteLine("Error: Please enter a number:")
Loop
End Sub
Sub Validate(ByVal Variable As Integer, ByVal LandscapeSize As Integer)
Dim Size As Integer = LandscapeSize * LandscapeSize
While Variable <= 0 Or Variable >= Size
Console.WriteLine("Error: Please enter a number:")
do
If Integer.TryParse(Console.ReadLine(), variable) Then Exit Do
Console.WriteLine("Error: Please enter a number:")
loop
End While
End Sub
Sub ReadNumber(ByRef变量为整数)
做
如果是Integer.TryParse(Console.ReadLine(),变量),则退出Sub
Console.WriteLine(“错误:请输入一个数字:”)
环
端接头
子验证(ByVal变量为整数,ByVal LandscapeSize为整数)
尺寸为整数=景观尺寸*景观尺寸
而变量=大小
Console.WriteLine(“错误:请输入一个数字:”)
做
如果是Integer.TryParse(Console.ReadLine(),变量),则退出Do
Console.WriteLine(“错误:请输入一个数字:”)
环
结束时
端接头
然而。。我猜您真的希望验证中的第一个变量是ByRef而不是ByVal。我看不出有多少可以更改的地方。。。也许你可以组合几行,但对你没有任何帮助。不要使用名称IsNumeric。。这是一个保留的系统函数名。2.使用try/catch捕获非数字不是最好的方法。错误处理有很大的开销。你最好读一个字符串,然后用系统函数IsNumeric()测试它。@Trevor某种程度上,我很高兴你这么说。有两个try-catch语句似乎很费劲。非常感谢。编辑-所以声明为字符串并使用IsNumeric..听起来更好…使用Integer.TryParse.我投票关闭这个问题,因为它要求审查
是否有一种方法可以组合或简化这些过程
,当然有,但本网站不适合这样做。是你需要参观的地方…我非常感激。TryParse似乎是一种更有效的方法。非常感谢。
Sub ReadNumber(ByRef Variable As Integer)
Do
If Integer.TryParse(Console.ReadLine(), variable) Then Exit Sub
Console.WriteLine("Error: Please enter a number:")
Loop
End Sub
Sub Validate(ByVal Variable As Integer, ByVal LandscapeSize As Integer)
Dim Size As Integer = LandscapeSize * LandscapeSize
While Variable <= 0 Or Variable >= Size
Console.WriteLine("Error: Please enter a number:")
do
If Integer.TryParse(Console.ReadLine(), variable) Then Exit Do
Console.WriteLine("Error: Please enter a number:")
loop
End While
End Sub