.net 如何检查VB、控制台应用程序、用户输入以确保输入的数字有效?
Vb不是我选择的语言,但我必须为学校做这件事,我对Vb的文档不是很容易。 我只是创建了一个非常简单的控制台应用程序,它接受用户输入:摄氏度,并将其转换为华氏度。我想确保,如果用户只点击enter而没有输入摄氏度,那么if-else语句将捕获并再次写入输入摄氏度。以下是我尝试过的:.net 如何检查VB、控制台应用程序、用户输入以确保输入的数字有效?,.net,vb.net,decimal,type-conversion,.net,Vb.net,Decimal,Type Conversion,Vb不是我选择的语言,但我必须为学校做这件事,我对Vb的文档不是很容易。 我只是创建了一个非常简单的控制台应用程序,它接受用户输入:摄氏度,并将其转换为华氏度。我想确保,如果用户只点击enter而没有输入摄氏度,那么if-else语句将捕获并再次写入输入摄氏度。以下是我尝试过的: Module Module1 'Chapter 2: Celcius to Fahrenheit 'Programmer: Scott McPherson 'Date: February
Module Module1
'Chapter 2: Celcius to Fahrenheit
'Programmer: Scott McPherson
'Date: February 2, 2012
'Purpose: To Convert User Input Celcius to Output Fahrenheit
'
'Declaration
Dim decCelcius As Decimal = 0
Dim decFahrenheit As Decimal = 0
Sub Main()
'Input in Celcius
Console.Write("Enter the degrees in Celsius: ")
Console.WriteLine()
If CDec(Console.ReadLine()) <> 0 Then
decCelcius = CDec(Console.ReadLine())
decFahrenheit = 1.8 * decCelcius + 32
Else
Console.WriteLine("Don't make me ask again! ENTER THE DEGREES IN CELSIUS: ")
decCelcius = CDec(Console.ReadLine())
decFahrenheit = 1.8 * decCelcius + 32
End If
Console.WriteLine()
Console.WriteLine("Degrees in Fahrenheit = " & decFahrenheit)
Console.Read()
End Sub
End Module
模块1
第二章:塞尔修斯到华氏
程序员:斯科特·麦克弗森
日期:2012年2月2日
'用途:将用户输入的摄氏度转换为输出华氏度
'
"宣言",
十进制十进制小数=0
十进制的十进制温度=0
副标题()
“在Celcius中输入
Console.Write(“输入摄氏度:”)
Console.WriteLine()
如果CDec(Console.ReadLine())为0,则
decCelcius=CDec(Console.ReadLine())
华氏温度=1.8*decCelcius+32
其他的
WriteLine(“不要让我再问了!输入摄氏度:”)
decCelcius=CDec(Console.ReadLine())
华氏温度=1.8*decCelcius+32
如果结束
Console.WriteLine()
Console.WriteLine(“华氏度数=“&decfhrenheit”)
Console.Read()
端接头
端模块
如何使其工作?当前验证输入方法的最大问题是,
CDec
运算符在转换失败时不会返回错误。您可以通过检查输入的值是否转换为0来对此进行补偿,但这意味着您将在输入0
时显示错误消息,这实际上是一个有效的温度值
因此,您可能不想使用CDec
运算符,而是希望切换到使用,这样做的优点是将成功/失败与实际转换值分开
只接受两个参数:要转换的字符串值(在您的情况下,由控制台.ReadLine()
方法返回)和引用(在VB.NET术语中,是传递给ByRef
类型的变量的值,如果转换成功,将用转换结果填充该变量)。该函数返回一个表示成功或失败的布尔值
您可以使用这个简单的重载,但使用可能“更好”,因为它允许您在尝试解析指定值时指定要使用的区域性。由于某些区域性使用句点(
)作为小数分隔符,而其他区域性使用逗号(,
),这对于区域性无关的应用程序是必要的。不过,对你来说,这可能有点过于前瞻性了。:-)
除了解决眼前的问题外,最好将If
/Else If
语句替换为While
循环。这样,它将不断地运行,直到用户输入一个有效的数字。这不仅为用户提供了所需的机会,而且还避免了在两个If
块中重复代码