Java read()方法的循环大小不正确?

Java read()方法的循环大小不正确?,java,Java,请帮助我理解这一点。我想使用BufferedReader中的read()方法输入5个数字。但是为什么即使我叫了5次也不能输入5个数字呢 BufferedReader inp = new BufferedReader (new InputStreamReader(System.in)); inp.read(); inp.read(); inp.read(); inp.read(); inp.read(); 运行时:(输入这些数字) 一, 二, 三, 进程

请帮助我理解这一点。我想使用BufferedReader中的read()方法输入5个数字。但是为什么即使我叫了5次也不能输入5个数字呢

BufferedReader inp = new BufferedReader (new InputStreamReader(System.in));

    inp.read();
    inp.read();
    inp.read();
    inp.read();
    inp.read();
运行时:(输入这些数字)

一,

二,

三,

进程已完成,退出代码为0

预期输入结果:(任何单个数字,只要我可以输入5个数字)

一,

二,

三,

四,

五,


进程以退出代码0结束

这里的技巧是
读取
读取字符,而不是行。所以你从读取中得到1 int,包括行尾。尝试切换到
BufferedReader.readline()

您还使用了术语“循环”,这意味着与调用方法5次不同

下面是一个要演示的示例

import java.io.*;

public class Borked{

    public static void main(String[] args) throws Exception{
        BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
        for(int i = 0; i<5; i++){
            int j = read.read();
            System.out.println(i + ", " + j);
        }
    }
}
import java.io.*;
公务舱{
公共静态void main(字符串[]args)引发异常{
BufferedReader read=新的BufferedReader(新的InputStreamReader(System.in));

对于(int i=0;i请提供一个实例来证明第一个循环不会重复5次。FWIW,三个循环读取不同的内容。第一个循环读取5个字符。第二个循环读取5行。第一个循环读取5(十进制)数字。第一个不读取5个字符的最可能原因是流中没有剩下5个字符。您没有告诉我们您给程序的输入。另外,请注意,
System.in
是缓冲的,所以它在按下
return
之前不会读取。读取()方法应该读取单个字符?单个字符的5倍而不是5个字符?您也没有告诉我们三行是如何生成的。不清楚您在问什么。据我所知,readLine()将在我们按enter键后终止。但是read()如何方法?它如何终止?@ratRiot01在第一次迭代中按enter键时,读取返回。在第二次调用读取时,它立即返回,因为缓冲区中有一个字符等待读取。