IsNumeric语句和范围

时间:2019-02-13 15:45:17

标签: vb.net visual-studio-2010

嘿,我正在做的每个人都必须验证用户输入数据。当问我的讲师是否可以使用IsNumeric验证两个数字之间的范围时,他只是说“是”,而没有告诉我如何做。 现在,我知道您可以使用if语句进行验证了,而我使用基本的方法可以这样做:

if hours < 0 then
   Messagebox("Please enter a value greater than 0" "Input Value to 
     low" messagebox.buttons retry/cancel) ''something like that
Elseif hours > 23 then
   Messagebox( "please enter a value less than 23"  "Input Value to 
   high" messagebox.buttons retry/cancel)
End if

我什至问他是否可以在if语句中使用AND来排列数据。再次是,没有例子

我想到的例子

If hours < 0 AND hours > 23 then
 '' continue processing
Else
    Messagebox("Please enter a Value between 0 and 23" "Input 
     value 
 out of range" messagebox.buttons retry/cancel)
End if

2 个答案:

答案 0 :(得分:0)

针对您的示例,您可以尝试以下操作:

N = 6;
A = diag(-2*ones(N,1),0) + diag(ones(N-1,1),1) + diag(ones(N-1,1),-1);
A(1,1:2) = [1,0];
A(end,end-1:end) = [0,1];

答案 1 :(得分:0)

IsNumeric()很老...现代实践倾向于使用Integer.TryParse()Double.TryParse(),具体取决于您需要哪种价值。您也可以使用CInt()Convert.ToInt32(),但是当您知道以字符串开头时,解析是最佳选择。

但是让我担心的是,您还应该打开Option Strict,或者至少打开Option Infer。其他任何事情实际上都是不好的做法。考虑到这一点,请看下面的代码:

Dim hours As String = GetSomeValueFromUser()

If IsNumeric(hours) Then
    If hours < 0 Or hours > 23 Then 'a value can never be both negative *and* greater than 24
       '...
    End
End If

在任何明智的项目中,这都应该是编译器错误,因为它使用字符串值(hours)就像是一个数字。首先您用IsNumeric()检查的没关系。如果您应该使用Option Strict,那仍然是错误。

这是更好的做法:

Dim hours As String = GetSomeValueFromUser()
Dim hrs As Integer

If Integer.TryParse(hours, hrs) AndAlso hrs>= 0 AndAlso hrs <= 23 Then
        'code here
Else
    MessageBox.Show("Please enter a Value between 0 and 23" "Input value out of range", MessageBoxButtons.RetryCancel)
End If

这里还有另外一件事:从不为Function声明变量,而编译器不知道显式类型。 Option Infer可以使那里的水有些混乱,但通常变量的类型应始终已知固定