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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张亚青 中级黑马   /  2013-3-17 03:54  /  1257 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张亚青 于 2013-3-17 06:32 编辑

  1. class ReadIn
  2. {
  3.         public static void main(String [] args) throws Exception
  4.         {
  5.                 InputStream in=System.in;
  6.                 StringBuilder sb=new StringBuilder();


  7.                 while (true)
  8.                 {
  9.                         int ch=in.read();
  10.                         if (ch=='\r')
  11.                         {
  12.                                 continue;
  13.                         }
  14.                         if (ch=='\n')
  15.                         {
  16.                                 String s=sb.toString();
  17.                                 if ("over".equals(s))
  18.                                 {
  19.                                         break;
  20.                                 }
  21.                                 System.out.println(s.toUpperCase());
  22.                                 sb=null;
  23.                         }else
  24.                                 sb.append((char)ch);
  25.                 }


  26.         }
  27. }

复制代码
这段代码录入的时候,会在控制台显示键盘录入的结果,键入回车会显示录入的该行结果,当录入“over”的时候会结束。

问题是:
当键入over结束的时候为什么会报错。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

2 个回复

正序浏览
sb=null,是变量sb指向了空,之后你还怎么循环添加输入内容到StringBuilder里面,
回复 使用道具 举报
你的问题不是录入over 报错  你的问题有两个

1  你要导入包  import  java.io.*;
2  sb=null;  你需要的是清空sb里面的数据  不是让它指向null   那样你输入第二行数据时  会报空指针异常  NoPointerException
    因为sb为空后不能调用 append方法   

   清空的方法是   sb.delete(0,sb.length());   删除sb中所有数据

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马