vb.net控制台应用程序只工作一次

vb.net控制台应用程序只工作一次,vb.net,loops,console,readline,Vb.net,Loops,Console,Readline,我只是在学习用vb.net编写代码,目前正忙于使用vb.net控制台应用程序。我一辈子都想不出什么来。在这里可能有人问过这个问题,但我无法通过搜索找到任何东西。我刚刚编写了一个简单的“检查是否输入了Y或N。如果输入了Y/N,则显示‘您已输入Y/N’”程序,第一次它就可以正常工作。然而,在第一次输入之后,我无法让流程重复。我得到的只是一片空白。例如,如果我输入y,我将得到相应的消息。然而,如果在那之后我输入n,我什么也得不到 代码如下: Module Module1 Sub Main()

我只是在学习用vb.net编写代码,目前正忙于使用vb.net控制台应用程序。我一辈子都想不出什么来。在这里可能有人问过这个问题,但我无法通过搜索找到任何东西。我刚刚编写了一个简单的“检查是否输入了Y或N。如果输入了Y/N,则显示‘您已输入Y/N’”程序,第一次它就可以正常工作。然而,在第一次输入之后,我无法让流程重复。我得到的只是一片空白。例如,如果我输入y,我将得到相应的消息。然而,如果在那之后我输入n,我什么也得不到

代码如下:

Module Module1

Sub Main()

    Console.Title = "Hello"
    Console.WriteLine("Y or N")
    Dim line As String
    line = Console.ReadLine()
    Do Until line = "exit"
        If line = "y" Then
            Console.WriteLine("you have chosen y")
            Console.ReadLine()
        ElseIf line = "n" Then
            Console.WriteLine("you have chosen n")
            Console.ReadLine()
        End If
        line = ""
    Loop
End Sub

End Module
我假设答案非常简单,但我似乎无法找到答案,也无法在网上找到答案


谢谢您的帮助。

您需要在Do循环中将
Console.Readline()
分配给
line

Do Until line = "exit"
    If line = "y" Then
        Console.WriteLine("you have chosen y")
    ElseIf line = "n" Then
        Console.WriteLine("you have chosen n")            
    End If
    line = Console.ReadLine()
Loop

这是你的问题:

line = ""
您正在读取控制台,但没有将其分配给变量

以下是它应该是什么样子:

Do Until line = "exit"
    If line = "y" Then
        Console.WriteLine("you have chosen y")
    ElseIf line = "n" Then
        Console.WriteLine("you have chosen n")
    End If
    line = Console.ReadLine()
Loop

您需要将
重新分配给从控制台读取的下一行,如下所示:

Module Module1

    Sub Main()

        Console.Title = "Hello"
        Console.WriteLine("Y or N")
        Dim line As String
        line = Console.ReadLine()
        Do Until line = "exit"

            If line = "y" Then
                Console.WriteLine("you have chosen y")
            ElseIf line = "n" Then
                Console.WriteLine("you have chosen n")
            End If

            line = Console.ReadLine()   ''here

        Loop
    End Sub

End Module

必须在行字符串中存储Console.ReadLine()的值

Module Module1

Sub Main()

    Console.Title = "Hello"
    Console.WriteLine("Y or N")
    Dim line As String
    line = Console.ReadLine()
    Do Until line = "exit"
        If line = "y" Then
            Console.WriteLine("you have chosen y")
        ElseIf line = "n" Then
            Console.WriteLine("you have chosen n")
        End If
        line = Console.ReadLine()
    Loop
End Sub

结束模块

在循环中,您正在执行
Console.ReadLine()
操作,而不使用该值执行任何操作,然后执行
line=“”
。您的循环以空行无限循环,并忽略用户输入


删除两行
Console.ReadLine()
,然后将
line=”“
替换为
line=Console.ReadLine()。

哇,这么多答案这么快!你没事,这就成功了。谢谢Jon B!哇,这么多答案这么快!你没事,这就成功了。谢谢你,乔纳森!哇,这么多答案这么快!你没事,这就成功了。谢谢你,安德鲁克斯!哇,这么多答案这么快!你没事,这就成功了。谢谢你,波迪顿!哇,这么多答案这么快!你没事,这就成功了。谢谢Dan Puzey!