RE:Luhn的检查

时间:2017-09-15 16:10:23

标签: java

我想弄清楚如何编写我从右到左,而不是从左到右读取的代码

 public static int sumofEvenSpot(long number)
{
    int sumEvenSpot = 0;
    String stringLength = Long.toString(number);

    for (int i = 0; i< stringLength.length(); i += 2)
        sumEvenSpot += (getDigit(Character.getNumericValue(stringLength.charAt(i)) * 2));
    return sumEvenSpot;
}

2 个答案:

答案 0 :(得分:0)

只需for(int i = stringLength.length() - 1; i = 0; i = i - 2)

for(start, end, increment)

OR

您可以反转字符串并执行常规操作,但需要更多代码

答案 1 :(得分:0)

您可以从最右边的数字开始求和,并且每次迭代将数字除以100以便移除当前数字和下一个数字(在奇数位置)以便保持对以下偶数的求和:

int sum = 0;    
while(number > 0) {    
    sum += number % 10;
    number /= 100;
}

这样做的一个好处是你不必将long转换为字符串然后再转换为int。