黑马程序员技术交流社区
标题:
System.in 键盘录入的一个小问题
[打印本页]
作者:
张亚青
时间:
2013-3-17 03:54
标题:
System.in 键盘录入的一个小问题
本帖最后由 张亚青 于 2013-3-17 06:32 编辑
class ReadIn
{
public static void main(String [] args) throws Exception
{
InputStream in=System.in;
StringBuilder sb=new StringBuilder();
while (true)
{
int ch=in.read();
if (ch=='\r')
{
continue;
}
if (ch=='\n')
{
String s=sb.toString();
if ("over".equals(s))
{
break;
}
System.out.println(s.toUpperCase());
sb=null;
}else
sb.append((char)ch);
}
}
}
复制代码
这段代码录入的时候,会在控制台显示键盘录入的结果,键入回车会显示录入的该行结果,当录入“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