【发布时间】:2017-02-13 18:31:29
【问题描述】:
您好,我目前正在为课程编写代码。我们基本上是在制作一个信用卡检查器来从文本文件中提取数字。我们必须遵循的校验位规则如下。
删除卡号的最后一位。最后一位是支票 数字。
反转数字。
将奇数位(1、3、5 等)的数字乘以 2。
从任何高于 9 的结果中减去 9。
对所有数字求和。
校验位(卡的最后一个数字)是您支付的金额 需要相加才能获得 10 的倍数(模 10)
所以我通过设置一个新变量并拿走卡#/10 来取消校验位。它很长,所以没有小数,所以这去掉了最后一个数字。然后我使用原始数字的 %10 将该数字存储为我的校验位。然后我使用循环来反转数字,可以看作:
long lcards = Long.parseLong(cards);
long lastDigit = lcards % 10;
long newCard = lcards / 10;
long reverseCard = 0;
while (newCard != 0)
{
reverseCard = reverseCard * 10;
reverseCard = reverseCard + (newCard % 10);
newCard = newCard / 10;
}
我现在卡在下一步了:/。我该怎么做?谢谢!
【问题讨论】:
-
您可能希望将数字存储为字节数组。可能比使用位运算和计算更容易。
-
我该怎么做呢?