0

VS2010 で VB を使い始めたばかりで、単純なコンソール計算機を作成しようとしています。ただし、出力を表示するのを待つことはできません。Console.Read() を配置した後でも、コンソール ウィンドウはすぐに閉じます。ReadLine() からの入力バッファにはまだ有効な文字がいくつかあると思います。ここにコードを貼り付けます:

サブメイン()

    Dim num1 As Double
    Dim num2 As Double
    Dim op As Char
    Dim ans As Double

    Console.Write("Enter first number:")

    num1 = CType(Console.ReadLine(), Double)

    Console.Write("Enter second number:")
    num2 = CType(Console.ReadLine(), Double)

    Console.Write("Enter an operator:")
    op = ChrW(Console.Read())

    Select Case op
        Case "+"
            ans = num1 + num2
            Console.WriteLine("Result=" + ans.ToString())

        Case "-"
            ans = num1 - num2
            Console.WriteLine("Result=" + ans.ToString())


        Case "*"
            ans = num1 * num2
            Console.WriteLine("Result=" + ans.ToString())

        Case "/"
            If num2 <> 0 Then
                ans = num1 / num2
                Console.WriteLine("Result=" + ans.ToString())
            Else : Console.WriteLine("Error: Division by zero")
            End If

    End Select

    Console.Read()

End Sub

最終的にコンソールを待機させるには、コードの最後に 3 つの Console.Read() を配置する必要があることに気付きました。なぜこうなった?

4

3 に答える 3

1

これを最後に追加してみてください。何が起こっているかがわかります。

Console.WriteLine(Console.Read().ToString())
Console.WriteLine(Console.Read().ToString())
Console.Read()

Console.Readreturn を押すとforopブロックが解除されますが、キャリッジ リターン/ライン フィード シーケンスはバッファ内にあり、消費されていません。したがって、2 つの追加Console.Readの呼び出しで CR (12 月: 13)/LF (12 月: 10) がクリアされ、次に 3 番目のブロックが必要に応じてクリアされます。

Console.ReadLineCR / LFを消費し、既存のアプリをブロックするものがないため、機能しません。2 つのConsole.ReadLine呼び出しまたはConsole.ReadLineそれに続く呼び出しConsole.Readが機能します。

于 2012-08-16T22:59:20.973 に答える