Vb.net 清除输入缓冲区:Visual Basic
我刚刚开始在VS2010中使用VB,并尝试编写一个简单的控制台计算器。但是,我不能让它等待显示输出。即使在放置console.Read()之后,console窗口也会立即关闭。我猜ReadLine()中的输入缓冲区仍然有一些有效字符。我将在此处粘贴代码: 副标题()Vb.net 清除输入缓冲区:Visual Basic,vb.net,input,Vb.net,Input,我刚刚开始在VS2010中使用VB,并尝试编写一个简单的控制台计算器。但是,我不能让它等待显示输出。即使在放置console.Read()之后,console窗口也会立即关闭。我猜ReadLine()中的输入缓冲区仍然有一些有效字符。我将在此处粘贴代码: 副标题() Dim num1为双精度 双精度num2 作为字符的Dim op 双倍 控制台。写入(“输入第一个数字:”) num1=CType(Console.ReadLine(),双精度) 控制台。写入(“输入第二个数字:”) num2=CT
Dim num1为双精度
双精度num2
作为字符的Dim op
双倍
控制台。写入(“输入第一个数字:”)
num1=CType(Console.ReadLine(),双精度)
控制台。写入(“输入第二个数字:”)
num2=CType(Console.ReadLine(),双精度)
控制台。写入(“输入运算符:”)
op=ChrW(Console.Read())
选择案例op
大小写“+”
ans=num1+num2
Console.WriteLine(“Result=“+ans.ToString())
案例“-”
ans=num1-num2
Console.WriteLine(“Result=“+ans.ToString())
案例“*”
ans=num1*num2
Console.WriteLine(“Result=“+ans.ToString())
案例“/”
如果num2为0,那么
ans=num1/num2
Console.WriteLine(“Result=“+ans.ToString())
Else:Console.WriteLine(“错误:除零”)
如果结束
结束选择
Console.Read()
端接头
我注意到我需要在代码的末尾放上3个Console.Read(),以便最终让控制台等待。为什么会发生这种情况?尝试将此添加到末尾,您将看到发生了什么:
Console.WriteLine(Console.Read().ToString())
Console.WriteLine(Console.Read().ToString())
Console.Read()
是,但回车/换行序列在缓冲区中,尚未使用。因此,另外两个Console.Read
调用清除CR(Dec:13)/LF(Dec:10),然后根据需要清除第三个块
Console.ReadLine
不起作用,因为它使用CR/LF,并且没有任何东西可以阻止现有的应用程序。两个Console.ReadLine
调用或Console.ReadLine
后跟Console.Read将起作用。使用Console.Readkey()
Dim num1为双精度
双精度num2
作为字符的Dim op
双倍
控制台。写入(“输入第一个数字:”)
num1=CType(Console.ReadLine(),双精度)
控制台。写入(“输入第二个数字:”)
num2=CType(Console.ReadLine(),双精度)
控制台。写入(“输入运算符:”)
op=ChrW(Console.Read())
选择案例op
大小写“+”
ans=num1+num2
Console.WriteLine(“Result=“+ans.ToString())
案例“-”
ans=num1-num2
Console.WriteLine(“Result=“+ans.ToString())
案例“*”
ans=num1*num2
Console.WriteLine(“Result=“+ans.ToString())
案例“/”
如果num2为0,那么
ans=num1/num2
Console.WriteLine(“Result=“+ans.ToString())
Else:Console.WriteLine(“错误:除零”)
如果结束
结束选择
Console.ReadKey()
我试过使用您的代码,但将“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
Sub-Main()
将num1变暗为双精度
双精度num2
作为字符的Dim op
双倍
控制台。写入(“输入第一个数字:”)
num1=CType(Console.ReadLine(),双精度)
控制台。写入(“输入第二个数字:”)
num2=CType(Console.ReadLine(),双精度)
控制台。写入(“输入运算符:”)
op=Console.ReadLine()
选择案例op
大小写“+”
ans=num1+num2
Console.WriteLine(“Result=“+ans.ToString())
案例“-”
ans=num1-num2
Console.WriteLine(“Result=“+ans.ToString())
案例“*”
ans=num1*num2
Console.WriteLine(“Result=“+ans.ToString())
案例“/”
如果num2为0,那么
ans=num1/num2
Console.WriteLine(“Result=“+ans.ToString())
Else:Console.WriteLine(“错误:除零”)
如果结束
结束选择
Console.Read()
端接头
我假设您没有收到任何类型的错误消息?如果您尝试Console.ReadLine()
而不是只尝试Console.Read(),会发生什么情况?
@Kjartan没有错误消息。使用Console.ReadLine()对它没有影响,即它仍然不会等待。@jim oneil确切地说,我得到13和10。这是否意味着每次使用Console.Read()进行输入时,我都必须编写Console.Read()两次?谢谢是的,假设你正在用另一个读数跟踪它,并且你不关心CR/LF。我没有看到刷新类型的方法。当然,您可以使用ReadLine或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()
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