我正在尝试接受用户输入并将其分配给类中定义的属性。当我运行该程序时,它会按预期要求用户输入,但显示不同的结果。有人可以指出我的错误在哪里吗?
我试图将本程序作为本教程的基础 https://docs.microsoft.com/en-us/dotnet/core/tutorials/vb-with-visual-studio 但尝试将其扩展到类。
我正在使用Visual Studio和Visual Basic的最新版本。这是一个可视的基本控制台应用程序
Module Module1
Sub Main()
Dim ClassInstance As New Class1()
Console.WriteLine("Input Property 1: ")
ClassInstance.Property1 = Console.Read()
Console.Write(ClassInstance.Property1)
Console.ReadKey(True)
End Sub
Public Class Class1
Public Property1 As Integer
Public Property2 As Integer
End Class
End Module
预期输出:
“输入属性1:” | 用户输入50 | 输出50
答案 0 :(得分:2)
Console.Read
从输入中读取下一个字符,并为您提供该字符的代码。例如,如果您在提示符 1 上键入5
,则Console.Read
将返回53。为什么?因为那是该字符的ASCII / Unicode代码(用Unicode术语来说,它是U + 0035,与用十六进制表示的数字相同)。
如果您想读取多个字符并将其解释为整数,则应a)使用Console.Read
以外的其他字符作为输入,b)使用{{3} }尝试将其转换为数字(因为用户并不总是向我们提供我们期望的输入)。
类似的东西:
Module Module1
Sub Main()
Dim ClassInstance As New Class1()
Console.WriteLine("Input Property 1: ")
Dim inp = Console.ReadLine()
Dim value as Int32
If Int32.TryParse(inp, value) Then
ClassInstance.Property1 = value
Console.Write(ClassInstance.Property1)
Console.ReadKey(True)
End If
End Sub
Public Class Class1
Public Property1 As Integer
Public Property2 As Integer
End Class
End Module
(如果我犯了语法错误,我深表歉意-我的VB很生锈)
实际上,您可能希望编写某种形式的循环来提示用户输入,并且直到成功解析后才终止。我认为Do
/ While
会适合那里-但如果要多次提示用户,则可能希望将“循环直到收到有效输入”代码提取到一个函数中将提示作为参数。
更多阅读-Int32.TryParse
/ ASCII。对于“ 7位ASCII”范围内的字符(无重音的基本拉丁字符),您检查的引用没有太大区别
1 无论您继续输入什么字符都没关系,您的程序只要求/得到其中一个