2

我刚刚学习在 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

我假设答案非常简单,但我似乎无法弄清楚或在线找到答案。

谢谢您的帮助。

4

5 回答 5

1

您需要在 Do Loop中分配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
于 2012-10-25T15:09:59.273 回答
1

您必须将 Console.ReadLine() 的值存储在 Line 字符串中。

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

端模块

于 2012-10-25T15:11:12.373 回答
0

这条线是你的问题:

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
于 2012-10-25T15:10:38.347 回答
0

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

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
于 2012-10-25T15:10:38.380 回答
0

在你的循环中,你Console.ReadLine()没有对值做任何事情,然后你正在做line = "". 您的循环以空行无限循环,并忽略用户输入。

删除这两行Console.ReadLine(),然后替换line = ""line = Console.ReadLine().

于 2012-10-25T15:11:23.607 回答