java中FileInputStream中遇到的问题

代码海岸 其他问答 1

编写代码没有按预期输出adcde

public class FISRead {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("read.txt");
        while(fis.read()!=-1){
            System.out.println((char)fis.read());
        }
        fis.close();
    }
}
运行结果及报错内容

b d

我的解答思路和尝试过的方法

我尝试过以下代码可以得到预期结果

我想要达到的结果

我想知道是为什么造成了这种结果

回复

共2条回复 我来回复
  • 毕设小屋
    这个人很懒,什么都没有留下~
    评论

    fis.read()方法是读取下一行数据,并返回该行数据。如果你再次调用它就会读取下一行(也就是第二行)。第一段代码中,你取出a做了while判断,输出的时候再次使用fis.read()读取出来的实际上是b。如此循环最后结果就是bd,如果文件中再加个 f 的话,那结果大概就是 bdf 了

    0条评论
  • 代码向导
    这个人很懒,什么都没有留下~
    评论

    l第一段代码里,while循环里读取的值没打印啊,循环体里又读一次才打印,相当于把a和c跳过了,输出结果就是b和d。第二段代码就对了,把读出来的值存放到变量后打印

    0条评论

发表回复

登录后才能评论