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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 楞个里格朗 中级黑马   /  2013-8-17 19:50  /  1159 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


在IO流中既然
import java.io.*;
class ReadIn
{
public static void main(String[] args)throw IOexception
{
  InputStream in=System.in;
  int ch=0;
while ((ch=in.read())!=-1)
{
  int ch=in.read();
  if(ch=='\r')
   continue;//既然是一次读一个字节,那么\r好像不影响结果,那么可不可以直接省略呢
  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);
}
}
如上
为什么字节流的接收对象是int型的?
还有就是回车所代表的反斜杠N和反斜杠R是否有一个就可以判定了,能否去掉反斜杠R

评分

参与人数 2技术分 +2 收起 理由
滔哥 + 1 提问2分
张俊生 + 1 神马都是浮云

查看全部评分

5 个回复

倒序浏览
你是说read()方法的返回值为什么是int类型吗?如果你问的是这个,因为他返回的是ascii码

评分

参与人数 1技术分 +1 收起 理由
张俊生 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
在window操作系统中换行是用\r\n来完成的,如果用户输入的字符中有 \r ,单独用 \r 来判断就没有想要的结果了
回复 使用道具 举报
哦,我懂了
if(ch=='\r')
   continue
  if(ch=='\n')
这一句由于是由于read()只能一次读一个字节所以到了回车符这必须判断换行
回复 使用道具 举报
楼上的是正解,补充一点,在windows下默认的\r\n是回车。 在linux下回车符是\n,
read()方法 返回的是作为整数读取的字符,范围在0到65535之间,如果达到流的末尾,则返回1
回复 使用道具 举报
楼主继续加油哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马