我一直在试图理解一个程序的代码,它可以将十进制数转换为7的基数。在给定的循环开始之前,我完全理解一切。你能给我解释一下吗?
do { char digit = (char) (number % 7 + '0'); s = digit + s; number /= 7; } while (number > 0); System.out.print(s);
kzipqqlq1#
我认为,您缺少的是char(7)并没有给出7作为字符,而是ascii表中的第7个字符。对7进行模数运算会得到一个介于0和6之间的数,其余的数会被7除。但是如果你想把它转换成一个字符,你需要在ascii表中找到这个数字的索引。这个索引将是零的索引加上这个数字
char digit = (char) (number % 7 + '0');
现在,我不确定是否有必要使用char。。。可以将字符串与数字连接起来。
mftmpeh82#
do { } while (number > 0);
是正常的吗 do-while -只是和 while -以检查 while -只有在对身体进行评估之后,而不是在评估之前 while -循环就行了。
do-while
while
正在将数字从数字转换为字符。 '0' 需要添加到号码中,因为号码 0 和角色不一样 '0' (例如,请参见ascii表格)并因此添加字符偏移量 '0' 到一个数字(例如。g。 7 )将产生表示字符的数字 '7' 而不是位置上的符号 8 (基于0)在字符集中。
'0'
0
7
'7'
8
ubof19bj3#
从评论来看,似乎主要是这一行
你不明白。它转换 number % 7 ,它是一个整数,以数字作为字符。数字的字符码是连续的,48表示“0”,49表示“1”,依此类推。在“0”的字符代码中添加一个介于0和9(含9)之间的数字,可以得到相应数字的字符代码。
number % 7
3条答案
按热度按时间kzipqqlq1#
我认为,您缺少的是char(7)并没有给出7作为字符,而是ascii表中的第7个字符。
对7进行模数运算会得到一个介于0和6之间的数,其余的数会被7除。但是如果你想把它转换成一个字符,你需要在ascii表中找到这个数字的索引。这个索引将是零的索引加上这个数字
现在,我不确定是否有必要使用char。。。可以将字符串与数字连接起来。
mftmpeh82#
是正常的吗
do-while
-只是和while
-以检查while
-只有在对身体进行评估之后,而不是在评估之前while
-循环就行了。正在将数字从数字转换为字符。
'0'
需要添加到号码中,因为号码0
和角色不一样'0'
(例如,请参见ascii表格)并因此添加字符偏移量'0'
到一个数字(例如。g。7
)将产生表示字符的数字'7'
而不是位置上的符号8
(基于0)在字符集中。ubof19bj3#
从评论来看,似乎主要是这一行
你不明白。
它转换
number % 7
,它是一个整数,以数字作为字符。数字的字符码是连续的,48表示“0”,49表示“1”,依此类推。在“0”的字符代码中添加一个介于0和9(含9)之间的数字,可以得到相应数字的字符代码。