【发布时间】:2021-01-20 19:56:12
【问题描述】:
嘿,关于一个视觉基础程序的问题,我正在使用 Console.ReadLine 到一个字符串中,但是当我到达程序的那个部分或我的控制台程序的任何部分时,键盘输入键似乎输入了两次,或者它完全跳过了一些东西一个 ReadLine 并在我有机会输入字符串之前收到 input.length 0。
如果没有我不认为的完整代码,这将无法运行,但我似乎无法让 ReadLine 在最初运行时提示输入字符串,它总是返回 0 一次,然后正常循环。我想知道这是否与我的键盘或视觉基础程序或命令行的键盘设置有关。
我不认为这是键盘错误,因为当我将代码输入到 Visual Basics 中时,它可以正常工作并且不会发送两次返回。我无法获得代码块中的完整代码。
...
Shared Sub Main()
Dim s As New Space()
Dim Ship As New Ships()
Dim Run As Boolean = True
Dim ChooseName As Boolean = True
Dim ch As Char
Dim PlayerName As String
While Run = True
s.PrintWelcome()
ch = Convert.ToChar(Console.Read())
If ch = "1" Then
While ChooseName = True
Console.WriteLine("Choose a Name Less then 50 Characters: ")
PlayerName = Console.ReadLine()
If PlayerName.Length > 50 Then
Console.WriteLine("Name is to Long!")
ElseIf PlayerName = "Q" Then
Run = False
Exit While
ElseIf PlayerName.Length <= 0 Then
Console.WriteLine("Please Enter a Player name or Q by itself to quit.")
Else
ChooseName = False
Console.WriteLine("PlayerName: " & PlayerName & " PlayerName.Length: {0}", PlayerName.Length)
End If
End While
If Run = True Then
End If
ElseIf ch = "2" Then
ElseIf ch = "3" Then
Run = False
ElseIf ch = "Q" Then
Run = False
Else
s.PrintWelcome()
End If
End While
End Sub
...
【问题讨论】:
-
为什么该方法声明为
Shared?如果您创建一个控制台应用程序,那么 IDE 会自动生成一个模块并在其中声明一个Main方法。Shared关键字在该上下文中无效,因此您必须更改了某些内容。 -
请阅读this。
-
ch = Convert.ToChar(Console.ReadLine().FirstOrDefault()) -
@Jimi,首先,在这种情况下不需要
Convert.ToChar。也就是说,考虑到ch实际上后来与String值进行比较,我建议ch实际上应该声明为类型String然后应该只是ch = Console.ReadLine()或者可能是ch = Console.ReadLine().TooUpper()。我还建议给ch取一个合适的名称来描述其用途,几乎所有标识符都应该这样做。 -
Console.ReadLine().FirstOrDefault()用于吞下回车并只取第一个字符,因此如果用户输入1、11、123,它总是算作1(它处理空字符串输入)。这取决于你想做什么,或者你期望在那里。
标签: vb.net input command-line return console-application