java 数字计数法

zaqlnxep  于 2023-04-19  发布在  Java
关注(0)|答案(1)|浏览(99)

我创建了一个方法,应该计算数字的位数,但它只在第一位数不为零时才起作用。例如,它为数字01011100提供了结果7而不是8,为数字00101111提供了6而不是8。我非常感谢任何帮助!

public static int countDigits(int x) {
    int y=0;
    while (!(x== 0)) 
        {
        x /= 10;
        y ++;
        }

    return y;
}

该方法仅在第一个“1”到来之后才开始计数数字。

xdnvmnnf

xdnvmnnf1#

00101111不是一个int值可以表示的东西。字面上。类似于:

int x = Integer.parseInt("00101111");
int y = Integer.parseInt("101111");

x和y是一位一位相同的。这里不可能区分xy。事实上,没有可能的方法在int中存储,比如说,400000000000(它没有那么远;int可以存储-2^31和+2^31-1之间的任何整数)。也没有办法专门存储00101111。这就是为什么int如此高效,它们只能表示非常特定的东西。而00101111不是其中之一。只有101111是。
如果你需要存储这样一个概念,那么它不是一个数字,而是某种有限的字符串;使用String(在这种情况下,您可以调用str.length()来计算其中有多少个字符),或者为它编写自己的类型。
如果你被提供了一个int值,并被要求计算数字,而你想要的答案是'8',因为那个int是用00101111创建的,这是完全不可能的-你需要改变给你那个int的任何代码,并将它改为给予你一个String或其他特定的数据类型。

相关问题