java - 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;
}
解决方案
int
s 不能容纳大于 2,147,483,647 的数字。您需要坚持使用long
s 来处理更大的数字。