Vb.net 如何检查输入是否为空/为空

Vb.net 如何检查输入是否为空/为空,vb.net,Vb.net,我需要检查输入是否为空 If input <= 100 And input > 0 And Not input = "" Then subjectsInt.Add(subjects(i), input) check = True End If 如果输入0而不是输入=“则 主题添加(主题(i),输入) 检查=正确 如果结束 我知道在该代码中,我正在将其作为字符串进行检查,但我已经执行了Not input=Nothing和Not input=0,并

我需要检查输入是否为空

If input <= 100 And input > 0 And Not input = "" Then

   subjectsInt.Add(subjects(i), input)
   check = True

End If
如果输入0而不是输入=“则
主题添加(主题(i),输入)
检查=正确
如果结束
我知道在该代码中,我正在将其作为字符串进行检查,但我已经执行了
Not input=Nothing
Not input=0
,并且我得到了一个错误:

运行时异常(第1行):从字符串“”到类型“Integer”的转换无效

堆栈跟踪:

[System.FormatException:输入字符串的格式不正确。]

[System.InvalidCastException:从字符串“”到类型“Integer”的转换无效。]

有什么建议吗

编辑


下面是代码,以防您需要查看:

错误告诉您,
输入是一个整数,您无法将整数与字符串进行比较,而这正是发生的情况

即使字符串只包含数字,类型系统也不会根据运算符对其进行转换

在您的示例中,
input=”“
input永远不能是“”。您应该将输入类型更改为字符串,然后在将其转换为整数之前进行检查

这将是一个解决方案:

Dim integerInput As Integer    
Dim stringInput = Console.ReadLine()
If Integer.TryParse(stringInput, integerInput) AndAlso integerInput <= 100 And integerInput > 0 Then
Dim integerInput为整数
Dim stringInput=Console.ReadLine()
如果Integer.TryParse(stringInput,integerInput)和Also integerInput为0,则
要将=与整数一起使用,需要转换字符串:

If Integer.Parse(input) <= 100 And Integer.Parse(input) > 0 And Not input = "" Then
如果Integer.Parse(input)0而不是input=“”,则
Integer.Parse将完成此工作

显然,如果您的输入是一个字符串,并且不能保证它只包含数字,那么您需要在输入之前进行一些检查,或者使用Integer.TryParse


最接近值类型的空检查是
EqualityComparer(整数的)。默认值。Equals(id,Nothing)
;除非您开始使用Nullable,否则就太晚了,因为当您输入非数字字符串时,
input=Console.ReadLine()
上的代码将失败。

好吧,我已经查看了您的代码,发现有很多问题,所有这些都是由于VB.NET在将Option Strict设置为Off时允许自由访问数据类型造成的。在此上下文中,VB.NET允许您将Console.ReadLine的返回值指定给试图帮助您添加隐式输入转换的整数。当然,如果用户键入ABCD,则此隐式转换除了触发异常之外没有其他方式通知您。所以我真的,真的建议您使用Option Strict设置为On()

现在,由于Option Strict对您的代码有很多错误,我已经重写了您的代码,然后在注释中解释了更改

选项严格打开
导入系统
导入System.Collections.Generic
公共模块模块1
公用分干管()
Console.WriteLine(“你好,世界”)
'我使用字符串列表而不是非类型化数组列表
将主题设置为新列表(字符串)()
{
“数学”,
“英语”,
“德语”
} 
Dim SUBJECTS作为新的System.Collections.Generic.Dictionary(字符串、整数)
Dim i,输入为整数
作为布尔值的Dim检查
对于受试者,i=0。计数-1
检查=错误
做
控制台写入线(主题(i)和“:”)
'将输入传递给字符串
Dim temp=Console.ReadLine()
'检查此字符串是否真的是数字
如果Int32.TryParse(温度,输入),则
如果输入0,则
主题添加(主题(i),输入)
检查=正确
如果结束
如果结束
检查时循环=False
下一个
对于受试者,i=0。计数-1
Console.WriteLine(主题(i)和“&subjectsInt(主题(i)))
下一个
Console.ReadLine()
端接头
端模块

它必须是
并且也必须是
并且您必须首先测试它。所以
如果不输入=”并且(input>0和input@HansPassant检查编辑部分:为什么我收到否决票?你们只是滥用了该功能。我的问题出了什么问题?学习如何使用Option Strict On。您将输入声明为整数,但随后将其分配给Console.ReadLine的返回值,该值返回一个字符串。最后检查If它包含一个空字符串。Option Strict On将阻止您执行这些基本错误。顺便说一句,整数永远不会为空。1.将
Option Strict On
添加到代码文件的顶部2.修复错误3.盈利!
Integer.Parse将执行此任务,直到用户输入“我喜欢饼”@Puropoix我认为您显然需要进行检查或使用TryParse。我将添加一条额外的注释。但帖子中没有提到
输入的来源
。甚至可以保证它是一个整数。发布的代码中没有用户输入。实际上他的
输入
变量是整数类型。检查他的小提琴。@visualincent我看不到完整的代码,我会看一看。应该在问题中。@VisualEvent你是对的,不需要检查,因为它甚至会在。。。