我看到下面的代码在某处,而我被(ry-'0')部分弄糊涂了。那是做什么的? bis是一个缓冲输入流,输入是多个整数的行,每个整数由一个空格分隔(即1 2 3 4 5 6)。bufferedinputstream help
static int num()throws IOException{
rz=0;
while((ry=bis.read())<'0' || ry>'9'){}
rz+=(ry-'0');
while((ry=bis.read())>='0' && ry<='9')
rz=rz*10+(ry-'0');
return rz;
}
如果bis位于文件末尾,则会进入无限循环。更好的方法是阅读文本并使用标准拆分(“”)和Integer.parseInt()方法。更隐蔽,几乎一样快。 – 2010-12-16 17:48:57
'扫描仪'将是一个更好的选择。 – khachik 2010-12-16 17:58:47
同意Peter Lawrey。这是非常糟糕的代码。 – EJP 2010-12-17 01:59:10