当前位置: 首页 > 知识库问答 >
问题:

BufferedReader/Scanner最后一行读取问题

葛和志
2023-03-14

在解决黑客级别的一个问题时,我面临着扫描器/Bufferedreader无法读取最后一个问题。因为它们提供的输入就像

10

abcdefghijk

2

R 1 2

W 3 4

因此,两个扫描器/BufferedReader都无法读取最后一行。如果输入类似,那么代码似乎可以正常工作。

10

abcdefghijk

2

R 1 2

W 3 4

(输入结束)

public class ScannerTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Scanner input = new Scanner(System.in);
        int len = input.nextInt();
        input.nextLine();
        String inputString = input.nextLine();
        int qc = input.nextInt();
        input.nextLine();
        System.out.println();
        System.out.println(len + inputString + qc);
        for(int i=0;i<qc;i++){
            String l = input.next();
            int le = input.nextInt();
            int ri =  input.nextInt();
            input.nextLine();
            System.out.println(l+le+ri);
        }
        input.close();
    }
}

下面是我正在使用的示例代码。我知道我们需要在行的末尾有一个\r或\n来从scanner/bufferedreader读取行。但是任何人都可以提供解决这个问题的方法,因为输入来自预定义的系统

共有1个答案

宋飞舟
2023-03-14

BufferedReader将读取最后一行,即使它没有以换行符结束。system.in是罪魁祸首,它自己进行行缓冲。一个本机系统的事情:假设你按了几个退格符来改变最后一个数字...

 类似资料:
  • 我试图分块读取输入流并写入文件以避免内存问题,我接收json格式的数据,并使用以下代码写入文件。 我的问题是,大多数json都写得很好,虽然其中一些包含损坏的数据,但我不确定我是否正确地将CharBuffer与BufferedReader一起使用,我观察到的另一件事是,对于少量数据,它正确地将CharBuffer写入文件,当我从服务器接收到更大的数据(大约2MB的输入流-不是很大)时,我通常会遇到

  • 问题内容: 我想使用BufferedReader在控制台中输入多行文本,然后单击“ Enter”以查找整个文本长度的总和。问题在于,似乎我进入了一个无限循环,当我按“ Enter”键时,程序并没有结束。我的代码如下: 你能告诉我我在做什么错吗? 问题答案: 阅读所有行的惯用方式是。另外,我建议发表声明。就像是 如果你想,当你收到一个空行来结束循环,在添加一个测试为循环 JLS-14.15。该声明说

  • 问题内容: 我了解Scanner的优点,以及何时使用Scanner和BufferedReader。我读了一个不同的问题,但在一些类似的问题中,它的问题是Scannervs. BufferedReader 当我从输入中读取内容时,为什么Scanner这么慢? 我认为这与Scanner中有一个小的缓冲区有关,但是在这里我迷路了。最初的问题来自 Codechef,但我对该解决方案不感兴趣。 这是具有给定

  • 我试图创建一个简单的java服务器应用程序,但我很难用BufferedReader正确读取用户的输入。问题是行delimeter仅为CR LF(“\r\n”),因此我不能使用readLine()标准方法。因此,我尝试实现我自己的方法: 现在,当我尝试获取并打印结果时: ...它只将字符序列打印到第一个换行符(“\r”或“\n”),其余输入由第二次调用readCRLFLine(inputStream

  • 据我所知,缓冲阅读器比非缓冲阅读器优化了很多,因为每次读取都将从内存中完成,不需要每次都从磁盘/网络进行I/O读/写。 所以我在这里阅读答案: 缓冲读取器和文件读取器之间的特定区别 我被第二个答案弄糊涂了,这个答案似乎有很高的票数: 当向BufferedReader对象发出“read”指令时,它会使用FileReader对象从文件中读取数据。当给出指令时,FileReader对象一次读取2(或4)

  • 我有一个名为“add”的方法,它将字符串作为参数,并使用bufferedwriter将其写入文件。完成此操作后,bufferedwriter将被刷新。 在另一个方法“read”中,我遍历文件中的行,但这些行是空的(因此我不能打印它们)。