bufferedinputstream help
我在某处看到了以下代码,我对('0')部分感到困惑。这是做什么的? bis是缓冲的输入流,输入是一个多个整数的行,每个整数用空格分隔(即1 2 3 4 5 6)。
static int num()throws IOException{
rz=0;
while((ry=bis.read())<'0' || ry>'9'){}
rz+=('0');
while((ry=bis.read())>='0' && ry<='9')
rz=rz*10+('0');
return rz;
}
没有找到相关结果
已邀请:
2 个回复
坝胺绣敝
将存储在
中的ASCII字符'0' - '9'转换为相应的十进制值(0-9)。 '0'转换为0,'1'转换为1,依此类推。
驮帽俺篮号
的不同实体的类型以便理解它。好吧,也许甚至在此之前我们必须意识到我们正在看一个减法,即表达式或类型x减y,其中x是
,y是
是
,
是
。在Java中,可以将
向上转换为
。对于像x-y这样的算术表达式,x和y必须是相同的类型。在你的情况下,你有
就类型而言,即
。因此,您的Java VM将自动将char转换为int,这将使得减号匹配的两个参数都是类型化的。这也是返回值为
的原因。您可以通过将rz的声明从
更改为
来检查:编译然后会抱怨您尝试将
(减法的结果)分配给
变量(rz)而不进行显式强制转换。