我试图通过这样做来计算卡号中的每个其他数字:
/*
Return the sum of the odd-place digits.
*/
public static int sumOfoddPlace(long number)
{
int maxDigitLength = 16;
int sum = 0;
for (int i = 1; i <= maxDigitLength; i++)
{
if (i % 2 == 1)
{
sum = sum + (int)(number % 10);
}
break;
}
return sum;
}
我得到的只是6.我要找的总和应该是37。
答案 0 :(得分:1)
你只是在第一次迭代时就脱离了循环。所以,你不会再去另一次迭代了。
但是,删除break
也无法解决您的问题。 number % 10
将始终为您提供该号码的最后一位数字,而不是每个替代号码。你应该遵循这种方法:
num % 10
- 会给你最后一位数。num
。答案 1 :(得分:1)
试试这个...这应该对你有用
public static int sumOfoddPlace(long number)
{
int maxDigitLength = 16;
int sum = 0;
for (int i = 0; i < maxDigitLength; i++)
{
if (i % 2 != 0)
{
sum = (sum + (int)(number % 10));
number = number/10;
}else {
number = number/10;
}
}
return sum;
}
我在这里做的是如果i
是奇数,我取一个数字的模数,所以我得到数字的最后一位数,然后将它加到总和然后我除去最后一位数将它除以10,如果数字是偶数,我只是摆脱i
位置的数字。
这里我以相反的顺序收集奇数位的数字。
答案 2 :(得分:0)
我还没有看到最低限度的解决方案,所以这里有:
public static int sumOddDigits(long input) {
int sum = 0;
for (long temp = input; temp > 0; temp /= 100) {
sum += temp % 10;
}
return sum;
}
你不需要除以10并检查它是否是偶数,你每次只能除以100。
答案 3 :(得分:-1)
这是更新的代码,其中我删除了flag的逻辑。这更短,更容易理解。
public static int sumOfOddDigits(long number){
int sum = 0;
String newString = new StringBuilder(String.valueOf(number)).reverse().toString();
number = Long.parseLong(newString);
while (number != 0){
sum = (int) (sum + number % 10);
number = number / 100;
}
return sum;
}