爱问知识人 爱问教育 医院库

BufferedReader

首页

BufferedReader

BufferedReader br = new BufferedReader(isr);
      String line = br.readLine();//为什么不用String line="";
      while(line != null){
        System.out.println(line);//为什么这句的在控制台输出与下一句的控制台输出不一样的,这句有内容但下一句就为null?
        line = br.readLine();
        System.out.println(line);
        
      }

提交回答

全部答案

    2010-04-07 10:48:19
  •   
    其实问题的原因很简单,程序中判断字符是否已经完全打印的语句
    while((c = br。read()) != -1)
    在第一次执行的时候已经读了一个字符出来,然后光标就会后移一位,接下来的循环中s=br。readLine();读到的就只是后续的字符串了,因此会少一个字符,解决的方法也不难,把判断条件改掉就是了
    我做了一下小小的改动便可解决
    import java。
      io。*; class Test { public static void main(String arg[])throws IOException{ InputStreamReader isr = new InputStreamReader(System。
      in); BufferedReader br = new BufferedReader(isr); int c; do{ String s = br。readLine(); System。out。println(s); }while(c = br。
      read()!=-1); } } 上面这个程序就可以完成想要的功能了。
      呵呵 另外,通常在BufferedReader类使用之后都会用一个flush()方法,我看有些网友也有疑问,其实BufferedReader用了一个系统级的缓冲区,只有当缓冲区满了的时候才会输出,如果没有满而又想要操作缓冲区的话,就只能用flush()方法来清空缓冲区,让结果输出,然后操作 。

    生***

    2010-04-07 10:48:19

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 174-193
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):