是否BufferedReader 不将第一个缓冲区中的内容清除,就无法显示第二个缓冲区的内容???
代码:String s1="";
      String s2="";
       
    BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in));
    BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in));
     s1=br1.readLine();
     s2=br2.readLine();
     System.out.println(s2);程序运行时,依次输入:
asdf
12345
输出的总是:asdf
为什么啊
若将程序改为:
s1=br1.readLine();
System.out.println(s1);     s2=br2.readLine();
     System.out.println(s2);
也就是在输出s2之前先将s1输出,则一切正常
迷茫中,能够在不输出s1的情况下,直接输出s2呢?(貌似前一种情况我输入的“12345”根本没有赋值到s2中,s2中内容与s1相同的)
小弟跪求解惑!!!

解决方案 »

  1.   


    import java.io.*;
    public class TextS{ 
      public static void main(String[] args) throws Exception{ 
      
       BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
       BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in));
       String s1 = br.readLine();
       String s2 = br1.readLine();
       System.out.println(s2);
      } 
    }
    输入aaa
        123
    怎么我是输出123,呵呵
      

  2.   

    楼主的答案有错,应该是12345.
    再不行你就用一个BufferedReader对象.
      

  3.   


    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    public class Test {
        public static void main(String[] args)throws Exception {
            BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in)); 
        BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in)); 
        String s1=br1.readLine(); 
        String s2=br2.readLine(); 
        System.out.println(s2);
        }
    }
    输入aaa 
        123 
    输出123
    楼主是不是哪里搞错了???
      

  4.   

    public static void main(String[] args) throws Exception
    {
    String s1 = "";
    String s2 = ""; BufferedReader br1 = new BufferedReader(
    new InputStreamReader(System.in));
    BufferedReader br2 = new BufferedReader(
    new InputStreamReader(System.in));
    s1 = br1.readLine();
    s2 = br2.readLine();
    System.out.println(s1);
    System.out.println(s2); }运行结果:
    asdf
    1234
    asdf
    1234结果正确啊,没有问题啊 
      

  5.   


    String s1=""; 
          String s2=""; 
          
        BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in)); //读取输入1
        BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in)); //读取输入2
        s1=br1.readLine(); //将输入一的第一行赋值到s1
        s2=br2.readLine(); //将输入二的第一行赋值到s2
        System.out.println(s2); 
    你只println了s2当然只有s2的内容输出了.....system.in好象应该书阻塞方式的,就是br1没读取完的话不会去读取br2的
    abcd
    123
    他只输出123不输出abcd...
      

  6.   

    汗,又看了下lz的程序..你说的那个情况不可能吧...你那程序的话输出的应该是最后输入的吧..你如果输入
    asdf 
    12345 
    输出应该是12345吧,另外更正下,应该是说BufferedReader.readLine()是阻塞方式..所以在 s1=br1.readLine()运行完之前br2是获取不到你的输入的值的.只有在它执行完了,也就是你输入asdf回车以后它把值赋给s1以后,才会去执行s2=br2.readLine()这时候你输入12345回车它就把值赋给了s2.我上贴说的输入1输入2是不准确的,br1和br2只是获取了system.in的输入流,所以他们本质是一样的.也就是说你这程序你只有一个br1结果也是一样的.. 
      

  7.   

    必须要关闭,你都调用System.in,会产生线程阻塞。
      

  8.   

    引用4楼的代码:
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    public class Test {
        public static void main(String[] args)throws Exception {
            BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in)); 
            BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in)); 
            String s1=br1.readLine(); 
            String s2=br2.readLine(); 
            System.out.println(s2);
        }
    }
    输入aaa 
        123 
    输出aaa
    我想是不是我的Jcreator与vista的底层兼容呢问题?
    更加迷茫中