【发布时间】:2019-03-14 02:06:38
【问题描述】:
所以我已经做了几个小时了,老实说,我完全被困住了。我写了一个 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 更改为 long。您正在处理的数字太大,int 原语无法处理。发生的情况是它再次循环返回(范围从 - 10 到 10)然后放入 11 将循环返回到 -10。
-
在
divisor的初始化中编写(int)演员表之前,大概有一个编译器警告可能会丢失有效数字。添加演员表会抑制警告,但不能解决根本问题。
标签: java for-loop integer-division