我创建了一个方法,应该计算数字的位数,但它只在第一位数不为零时才起作用。例如,它为数字01011100提供了结果7而不是8,为数字00101111提供了6而不是8。我非常感谢任何帮助!
public static int countDigits(int x) {
int y=0;
while (!(x== 0))
{
x /= 10;
y ++;
}
return y;
}
该方法仅在第一个“1”到来之后才开始计数数字。
1条答案
按热度按时间xdnvmnnf1#
00101111
不是一个int
值可以表示的东西。字面上。类似于:x和y是一位一位相同的。这里不可能区分
x
和y
。事实上,没有可能的方法在int
中存储,比如说,400000000000(它没有那么远;int可以存储-2^31和+2^31-1之间的任何整数)。也没有办法专门存储00101111
。这就是为什么int
如此高效,它们只能表示非常特定的东西。而00101111
不是其中之一。只有101111
是。如果你需要存储这样一个概念,那么它不是一个数字,而是某种有限的字符串;使用
String
(在这种情况下,您可以调用str.length()
来计算其中有多少个字符),或者为它编写自己的类型。如果你被提供了一个
int
值,并被要求计算数字,而你想要的答案是'8',因为那个int是用00101111
创建的,这是完全不可能的-你需要改变给你那个int
的任何代码,并将它改为给予你一个String
或其他特定的数据类型。