黑马程序员技术交流社区
标题:
关于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