黑马程序员技术交流社区

标题: IO小问题请教 [打印本页]

作者: 唐林渊    时间: 2012-3-29 12:23
标题: IO小问题请教
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);
                }
                }

}

作者: 刘元明    时间: 2012-3-29 12:32
你通过键盘录入是一行行的,你每次回车不就是将/r/n当内容也输进去了;
当你读取到它时,就相当于读到标记处了。
作者: H07000223    时间: 2012-3-29 12:48
字符char类型在内存中存在形式就是int类型的
作者: izwj    时间: 2012-3-29 12:58
在内存中字符的存储实际上是把字符相对应的ASCII代码放到存储单元中的。
而这些ASCII代码值在计算机中也是以二进制形式存放的。/r和/n也有对应的ASCII值

作者: 何万县    时间: 2012-3-29 13:14
我认为是不可以的,因为回车有一个作用是执行命令,此处应该不能读吧?
作者: 张明星    时间: 2012-3-29 14:04
ASCII码里面 \r 是0x0D,也就是13;  \n是0x0A,也就是10
就像'a' 对应的ASCII码为97,比较'a'==97,返回值为真。
同样这里的\r,\n都可以和int型的数字相比较,13=='\r',10=='\n',就是这个道理。





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