gpt4 book ai didi

vb.net - 为什么 Try/Catch 在数字类型中不起作用?

转载 作者:行者123 更新时间:2023-12-02 21:47:17 25 4
gpt4 key购买 nike

Dim mynumber as Integer 'This is the variable as an integer, (Integers only allow WHOLE numbers)

Console.WriteLine("Enter your number..") 'Ask to enter number
Try
mynumber = Console.ReadLine 'Read user input and store it
Catch
Console.WriteLine()
Console.ForegroundColor = ConsoleColor.Red
Console.WriteLine("Only whole numbers allowed! Press enter to start again!")
Console.ResetColor()
Console.ReadLine()
Console.Clear()
GoTo start
End Try

好的,伙计们,正如您从上面的示例中看到的,我已经设置了一个 Try/Catch 来进行错误处理。我遇到了一个问题。是的,Try/Catch 代码会阻止输入字母(字符串),但当我输入十进制数字时,它仍然接受它。为什么?如何防止这种情况发生?小数不应该被接受,因为整数只接受整数!

谢谢。

最佳答案

数字类型之间存在隐式转换,因此不会触发错误。有多种方法可以了解确切的数字类型。我想这里最好的选择是以下代码行:

Dim mynumber0 As Double 'This is the variable as an integer, (Integers only allow WHOLE numbers)
Dim wasOK As Boolean = True
Console.WriteLine("Enter your number..") 'Ask to enter number
Try
mynumber0 = Console.ReadLine 'Read user input and store it
If (Convert.ToInt32(mynumber0) <> mynumber0) Then
wasOK = False
End If
Catch
wasOK = False
End Try

Dim mynumber As Integer = mynumber0
If (Not wasOK) Then
Console.WriteLine()
Console.ForegroundColor = ConsoleColor.Red
Console.WriteLine("Only whole numbers allowed! Press enter to start again!")
Console.ResetColor()
Console.ReadLine()
Console.Clear()
GoTo start
End If

更新

TryParse 替代方案,按照 mafafu 的建议

Dim mynumber As Integer 'This is the variable as an integer, (Integers only allow WHOLE numbers)
Console.WriteLine("Enter your number..") 'Ask to enter number
If (Not Integer.TryParse(Console.ReadLine, mynumber)) Then
Console.WriteLine()
Console.ForegroundColor = ConsoleColor.Red
Console.WriteLine("Only whole numbers allowed! Press enter to start again!")
Console.ResetColor()
Console.ReadLine()
Console.Clear()
GoTo start
End If

关于vb.net - 为什么 Try/Catch 在数字类型中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19304848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com