A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 oath 于 2013-8-7 23:00 编辑

早上起来看贴子,看到输入的问题,一时手贱,将bufferedreader和scanner一起用了,结果让自己头疼了半天
话不多说,看代码:

  1.             BufferedReader bufw = new BufferedReader(new InputStreamReader(System.in));
  2.             String line =bufw.readLine();
  3.             System.out.println(line);                        
  4.             bufw.close();
  5.                
  6.             Scanner in=new Scanner(System.in);               
  7.             String str=in.next();
  8.             System.out.println(str);
  9.             in.close();
复制代码
这段代码 在eclipse里面显示空指针异常,     蛋疼,为什么呢?求解答

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 淡定

查看全部评分

12 个回复

倒序浏览
Scanner in=new Scanner(System.in);               
String str=sc.next();

{:soso_e113:}
回复 使用道具 举报
longlangcx 发表于 2013-8-6 09:21
Scanner in=new Scanner(System.in);               
String str=sc.next();

好像不行a
:#
回复 使用道具 举报
longlangcx 发表于 2013-8-6 09:21
Scanner in=new Scanner(System.in);               
String str=sc.next();

你拿去到eclipse上刷下看,,,是不是  。。。。
回复 使用道具 举报
bufw.close();    注释掉这句试下 ,放到最后。

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
貌似是因为你关闭BufferedReader流的时候把System.in给关闭了,所以Scanner读不到数据。。

评分

参与人数 1技术分 +2 收起 理由
神之梦 + 2 赞一个!

查看全部评分

回复 使用道具 举报
oath 中级黑马 2013-8-6 18:17:03
7#
sergio 发表于 2013-8-6 14:14
bufw.close();    注释掉这句试下 ,放到最后。

   tks   正常了   ,,但还是不理解啊  ,第二次新建scanner的时候  传进去的System.in   ^ 又是怎么回事呢
回复 使用道具 举报
oath 中级黑马 2013-8-6 18:17:20
8#
longlangcx 发表于 2013-8-6 16:09
貌似是因为你关闭BufferedReader流的时候把System.in给关闭了,所以Scanner读不到数据。。 ...

   tks   正常了   ,,但还是不理解啊  ,第二次新建scanner的时候  传进去的System.in   ^ 又是怎么回事呢
回复 使用道具 举报
oath 发表于 2013-8-6 18:17
tks   正常了   ,,但还是不理解啊  ,第二次新建scanner的时候  传进去的System.in   ^ 又是怎么回 ...

System.in是System类的一个静态成员啊,流虽然关闭了,但是引用还在啊。
你把bufw流关闭了之后,照样可以把bufw引用传给别人,只是把一个关闭了的流当正常的用就会抛异常罢了,直接写个System.in.close(),然后new Scanner(System.in).next(),应该跟你这个错误提示一样。
回复 使用道具 举报
longlangcx 发表于 2013-8-6 18:25
System.in是System类的一个静态成员啊,流虽然关闭了,但是引用还在啊。
你把bufw流关闭了之后,照样可以 ...

学习了      感谢
回复 使用道具 举报
本帖最后由 施大勇 于 2013-8-6 20:21 编辑

学习来了
bufw.close()关闭了与流及相关资源,那么也就是说它将System.in给关了吗?
System.in关闭了后在这个类的代码中就不可以使用System.in了吗?那么如果
在这个类中关闭了System.in,在别的类中是不还可以应用呢?
(几个类处在同一个程序中)

求解啊?
回复 使用道具 举报
施大勇 发表于 2013-8-6 20:06
学习来了
bufw.close()关闭了与流及相关资源,那么也就是说它将System.in给关了吗?
System.in关闭了后在这 ...

兄第    我先把帖子设置成 已解决 了  等以后  再 和你探讨探讨
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马