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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐林渊 黑马帝   /  2012-3-29 12:23  /  1840 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static void main(String[] args) throws IOException {
                //System.in是输入设备 对应的是读取字节流InputStream
                InputStream in=System.in;
                //定义一个容器,装打印的字节
                StringBuilder sb=new StringBuilder();
                while(true){
                        int x=in.read();//读取键盘上打印的数据
                        if(x=='\r')//                                                                                       ???此处键盘 上录入的返回值是int 类型的          能和'\r'做比较?????
                                continue;
                        if(x=='\n')                                                                                              ???此处键盘 上录入的返回值是int 类型的          能和'\n'做比较?????
                        {
                                String s=sb.toString();
                                if("over".equals(s))
                                        break;
                                System.out.println(s.toUpperCase());
                                sb.delete(0,sb.length());
                        }
                        else
                        sb.append((char)x);
                }
                }

}

5 个回复

倒序浏览
你通过键盘录入是一行行的,你每次回车不就是将/r/n当内容也输进去了;
当你读取到它时,就相当于读到标记处了。
回复 使用道具 举报
字符char类型在内存中存在形式就是int类型的
回复 使用道具 举报
在内存中字符的存储实际上是把字符相对应的ASCII代码放到存储单元中的。
而这些ASCII代码值在计算机中也是以二进制形式存放的。/r和/n也有对应的ASCII值
回复 使用道具 举报
我认为是不可以的,因为回车有一个作用是执行命令,此处应该不能读吧?
回复 使用道具 举报
ASCII码里面 \r 是0x0D,也就是13;  \n是0x0A,也就是10
就像'a' 对应的ASCII码为97,比较'a'==97,返回值为真。
同样这里的\r,\n都可以和int型的数字相比较,13=='\r',10=='\n',就是这个道理。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马