我刚刚开始在VS2010中使用VB并尝试编写一个简单的控制台计算器。但是,我无法让它等待显示输出。即使在放入Console.Read()之后,控制台窗口也会立即关闭。我想我的ReadLine()输入缓冲区仍然有一些有效字符。我会在这里粘贴代码:
Sub Main()
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(),以便最终让控制台等待。为什么会这样?
答案 0 :(得分:1)
尝试将此添加到最后,您将看到发生了什么:
Console.WriteLine(Console.Read().ToString())
Console.WriteLine(Console.Read().ToString())
Console.Read()
Console.Read
for op
is unblocked when you hit return,但回车/换行序列在缓冲区中并且尚未消耗。因此,另外两个Console.Read
调用清除了CR(12月13日)/ LF(12月10日),然后是你想要的第3个块。
Console.ReadLine
不起作用,因为它消耗CR / LF并且没有任何东西可以阻止现有的应用程序。 <{1}}两个电话或Console.ReadLine
后跟Console.ReadLine
即可。
答案 1 :(得分:0)
使用Console.Readkey():
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.ReadKey()
答案 2 :(得分:0)
我已经尝试过使用您的代码,但是将“ op = ChrW(Console.Read())”更改为“ op = Console.ReadLine()”,并且运行良好
Sub Main()
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 = Console.ReadLine()
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