console清空缓冲区_如何清除Java中的输入缓冲区

For avoiding any unwanted character which has been entered in console like \n

we use nextInt() or nextLine() etc.

But in these cases actually the control is going a step ahead leaving the unwanted string or something like this.

But I want to delete or flush out the memory of buffer in which other unwanted data is taken by the system.

For example -->

Scanner scan=new Scanner(System.in);

scan.nextInt();

scan.nextline();//this statement will be skipped

because the system is taking \n as a line next to the integer given as input.

In this case without using scan.nextLine() I want to simply clear/flush out the buffer memory where the \n was stored.

Now please tell me how to delete the input buffer memory in java

Thank you. :)

解决方案

You can use this to clear all existing data in the buffer:

while(sc.hasNext()) {

sc.next();

}

If you are only doing this to remove the newline (\n) characters from the input, you can use:

while(sc.hasNext("\n")) {

sc.next();

}

If the goal is to only read integers and skip any other characters, this would work:

while(sc.hasNext() && !sc.hasNextInt()) {

sc.next();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 C# ,可以使用 SerialPort 类来读取串口数据,并在扫码枪触发的事件创建缓冲区并匹配。示例代码如下: ```csharp private string buffer = ""; // 缓冲区 private string endChar = "\r\n"; // 结束符 private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { buffer += serialPort.ReadExisting(); // 将读取到的数据追加到缓冲区 // 判断缓冲区是否存在结束符 if (buffer.Contains(endChar)) { // 获取结束符所在位置 int index = buffer.IndexOf(endChar); if (index >= 0) { // 获取完整的数据 string data = buffer.Substring(0, index + endChar.Length); buffer = buffer.Substring(index + endChar.Length); // 清空缓冲区 // 处理数据 HandleData(data); } } } private void HandleData(string data) { // 处理扫描到的数据 Console.WriteLine("扫描到的数据:" + data); } ``` 上述代码,我们在 SerialPort 的 DataReceived 事件,将读取到的数据追加到缓冲区,并判断缓冲区是否存在结束符。如果存在结束符,就说明已经读取到完整的数据,可以进行处理了。在 HandleData() 方法,可以处理扫描到的数据。在处理完数据后,需要清空缓冲区。 需要注意的是,结束符的设置需要根据扫码枪的实际情况进行调整。有些扫码枪的结束符是“\r\n”,有些则是“\r”或“\n”。如果不确定结束符的设置,可以通过查看扫码枪的文档或者试错来确定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值