本帖最后由 a3111006354 于 2014-08-25 11:09:51 编辑

解决方案 »

  1.   

    想问一下为什么这段代码会出错,另外如果不在finally中将bReader关闭的话,就有没错了,这又是为什么
      

  2.   

    请问报什么错?然后你关闭bReader的时候加一个非空判断if(bReader!=null),试试
      

  3.   

    close本身没问题,但是System.in本身是全局静态的,你在test1里把它close掉,但是又在main里循环调用test1,也就是间接调用了关闭的System.in,它是已关闭的,所以就报错了
      

  4.   

    因为你关闭bReader的时候连带把System.in也关掉了
    另外你的外层while也不对,你这样死循环新建对象,堆很快就爆了下面帮你改了个程序,应该是你要的效果public class StreamTest { public static void main(String[] args) {
    new StreamTest().test1();
    } public void test1() {
    BufferedReader bReader = new BufferedReader(new InputStreamReader(
    System.in));
    System.out.println("Input:"); try {
    String input;
    while ((input = bReader.readLine()) != null) {
    System.out.println("Message From User: " + input);
    }
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    try {
    bReader.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    }