首页 > 解决方案 > for 循环中的除数值神秘地(?)变化

问题描述

所以我一直在这几个小时,老实说,我完全被困住了。我写了一个 for 循环来计算整数中的数字数量,但我发现一旦我输入一个超过 10 位的数字,除数就会发生变化,我不知道为什么。我已经搜索了互联网无济于事,所以如果您有任何帮助或提示,我将不胜感激。谢谢!

 public static int getNumberOfDigits(long creditCardNumber)
{
    //problem with 0's at beginning and more than 10 digits
    int nDigitsInCard = 0;
    int divisor = (int) creditCardNumber;
    for(int i = 0; i <= creditCardNumber; i++){
        while(divisor!=0){
            divisor/=10;
            ++nDigitsInCard;
        }
}
    // return the number of digits in nDigitsInCard

    return nDigitsInCard;
}

标签: javafor-loopinteger-division

解决方案


ints 不能容纳大于 2,147,483,647 的数字。您需要坚持使用longs 来处理更大的数字。


推荐阅读