黑马程序员技术交流社区

标题: 关于IO流中的一些问题 [打印本页]

作者: 楞个里格朗    时间: 2013-8-17 19:50
标题: 关于IO流中的一些问题

在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

作者: 许云龙    时间: 2013-8-17 20:50
你是说read()方法的返回值为什么是int类型吗?如果你问的是这个,因为他返回的是ascii码
作者: 许云龙    时间: 2013-8-17 20:54
在window操作系统中换行是用\r\n来完成的,如果用户输入的字符中有 \r ,单独用 \r 来判断就没有想要的结果了
作者: 楞个里格朗    时间: 2013-8-17 21:02
哦,我懂了
if(ch=='\r')
   continue
  if(ch=='\n')
这一句由于是由于read()只能一次读一个字节所以到了回车符这必须判断换行
作者: a2213502    时间: 2013-8-17 23:36
楼上的是正解,补充一点,在windows下默认的\r\n是回车。 在linux下回车符是\n,
read()方法 返回的是作为整数读取的字符,范围在0到65535之间,如果达到流的末尾,则返回1
作者: a2213502    时间: 2013-8-18 00:14
楼主继续加油哈




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