弱智的问题?但是我真的不懂,请帮我解释

wuguix 2004-06-09 03:59:30
public int readLine(byte[] b, int off, int len) throws IOException {

if (len <= 0) {
return 0;
}
int count = 0, c;

while ((c = read()) != -1) {
b[off++] = (byte)c;
count++;
if (c == '\n' || count == len) {
break;
}
}
return count > 0 ? count : -1;
}
}
我就是弄不懂while ((c = read()) != -1)这句是怎么运做的,怎么解释的?

...全文
120 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
linbuilder 2004-06-09
  • 打赏
  • 举报
回复
每输入完一个字符后就比较,直到输入完为止,这个算法在C语言基础中就涉及到过
wuguix 2004-06-09
  • 打赏
  • 举报
回复
怎么没人回答了,继续呀,还是没有 彻底弄明白?
ecaol 2004-06-09
  • 打赏
  • 举报
回复
是 (byte)c 起的作用吧。读到数组里面没有东西了。系统返回‘\n'.
bestdelphier 2004-06-09
  • 打赏
  • 举报
回复
int 和 char 是可以直接比较的。
wuguix 2004-06-09
  • 打赏
  • 举报
回复
顺便在问一个
int count = 0, c;
这里的c声明为了int类型
但后面
if (c == '\n' || count == len)
好象c又成了字符型的,对不对?
ganchai 2004-06-09
  • 打赏
  • 举报
回复
楼上的已经说得蛮清楚了, 我再罗嗦几句

while是在做循环,可能你不理解的地方是循环体是怎么运行的,
每运行一次read(),其流指向就顺移一次,直到结束返回 -1 则退出循环体
allen830826 2004-06-09
  • 打赏
  • 举报
回复
当流内容输出完毕的时候
用read()方法返回值就是-1
程序的意思就是一直读取流内容
直到读取完毕为止

81,115

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧