黑马程序员技术交流社区

标题: System.in 键盘录入的一个小问题 [打印本页]

作者: 张亚青    时间: 2013-3-17 03:54
标题: System.in 键盘录入的一个小问题
本帖最后由 张亚青 于 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结束的时候为什么会报错。
作者: amen0205    时间: 2013-3-17 05:20
你的问题不是录入over 报错  你的问题有两个

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

   清空的方法是   sb.delete(0,sb.length());   删除sb中所有数据
作者: 黄基焜    时间: 2013-3-17 09:48
sb=null,是变量sb指向了空,之后你还怎么循环添加输入内容到StringBuilder里面,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2