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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 回首、后_街 中级黑马   /  2013-4-16 21:19  /  1643 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 回首、后_街 于 2013-4-17 21:28 编辑

这代码运行,s中的值是" "是怎么回事帮忙看一下
sb没有赋到值
InputStream in = System.in;
  StringBuffer sb= new StringBuffer();
  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.delete(0,s.length());
   }
  }

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

4 个回复

倒序浏览
本帖最后由 殇_心。 于 2013-4-16 22:00 编辑

额。。
老兄你在搞什么东东。。。
你定义的sb又不用。。所以是空的。
你要读取一个值就存一个值。没时间贴代码了。
回复 使用道具 举报
看你的代码应该是视频IO 里面的,建议多看看,因为你少了一个关键步骤,导致sb.toString()输出为空

你把键盘录入的数据全部写到流对象里去了,这时需要sb.append((char)ch)将读取到的键盘录入 强转成字符 char 类型,在添加到 StringBuffer中
回复 使用道具 举报
  1. public static void main(String[] args) throws IOException {
  2.                 InputStream in = System.in;
  3.                 StringBuffer sb = new StringBuffer();
  4.                 while (true) {
  5.                         int ch = in.read();
  6.                         //在这里加上如下代码,把输入的值加进sb里,之后sb里就有值了。
  7.                         sb.append((char)ch);
  8.                         if (ch == '\r')
  9.                                 continue;
  10.                         if (ch == '\n') {
  11.                                 //如果没加注释里说的代码,sb里什么也没有,toString方法返回的是""
  12.                                 String s = sb.toString();
  13.                                 if ("over".equals(s))
  14.                                         break;
  15.                                 System.out.println(s.toUpperCase());
  16.                                 sb.delete(0, s.length());
  17.                         }
  18.                 }
  19.         }
复制代码
看楼主的意思,应该是要实现 输入小写字母转成大写的功能吧?
我加了行代码,把输入的值加进sb里,这样之后就会有值了。

不过建议楼主再把代码加上健壮性判断,否则可能会出错的。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
楼主的代码运行了停止不了。在最小改动原来楼主代码地情况下
  1. import java.io.IOException;
  2. import java.io.InputStream;

  3. public class InputStreamTest {

  4.         /**
  5.          * @param args
  6.          * @throws IOException
  7.          */
  8.         public static void main(String[] args) throws IOException {
  9.                 InputStream in = System.in;
  10.                 StringBuffer sb = new StringBuffer();
  11.                 while (true) {
  12.                         char ch = (char)in.read();
  13.                         if (ch == '\r'){
  14.                                 continue;
  15.                         }
  16.                         sb.append(ch);
  17.                         if (ch == '\n') {
  18.                                 String s = sb.toString();
  19.                                 if ("over\n".equals(s))
  20.                                         break;
  21.                                 System.out.println(s.toUpperCase());
  22.                                 sb.delete(0, s.length());
  23.                         }
  24.                 }
  25.                 in.close();
  26.         }

  27. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马