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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马超 中级黑马   /  2012-5-9 16:35  /  1644 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package 读取键盘录入;
import java.io.*;
public class ReadIn
{
        public static void main(String[] args) throws IOException
        {
                InputStream is = System.in;
                StringBuilder sb = new StringBuilder(); //把键盘录入的都存到了数组当中去了吗?,二者之间有必然的联系吗?               
                while(true)
                {
                        int ch = is.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,sb.length());  //清空数组中的内容
                        }
                        else
                                sb.append((char)ch);
                }
        }

}


//BufferedReader  bufr = new BufferedReader(new InputStreamReader(System.in));

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
没理解懂你的问题意思?下面给你注释一下 希望可以帮到你。
  1. public static void main(String[] args) throws IOException
  2. {
  3.         InputStream is = System.in;//创建键盘输入流对象
  4.         StringBuilder sb = new StringBuilder(); //创建字符串缓冲区               
  5.         while(true)
  6.         {
  7.                 int ch = is.read();//读取键盘流的数据,一次读一个字节
  8.                 if(ch == '\r')//判断是否是\r如果是返回重新读数据
  9.                                 continue;
  10.                 if(ch == '\n')//判断是否是\n,如果不是就执行append方法,如果是执行下代码
  11.                 {
  12.                         String s = sb.toString();  //将字符串缓冲区的数据转成字符串,为的是能够判断
  13.                         if("over".equals(s))  //判断标记
  14.                                         break;
  15.                         System.out.println(s.toUpperCase());
  16.                         sb.delete(0,sb.length());  //清空数组中的内容
  17.                 }
  18.                 else
  19.                         sb.append((char)ch);//将字节数据转成字符并添加到sb缓冲区中
  20.         }
  21. }
复制代码
回复 使用道具 举报
StringBuilder是缓冲区不是数组,String不能是数组,你用String 追加的话就得String+=String 这样 用一个String代替上一个值  Stringbuilder就不用 应为每次修改前的值在缓冲区。存在缓冲区是为了方便对缓冲区的数据操作。当然你不定义缓冲区也是可以的。就看你录入的数据是否需要再次使用。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马