根据位置改变数字

时间:2017-02-13 18:31:29

标签: java loops

你好,我现在正在为课堂编写一些东西。我们基本上是建立一个信用卡检查器来从文本文件中提取数字。我们必须遵循的校验位规则如下。

  • 从卡号中删除最后一位数字。最后一位是支票 数字。

  • 反转数字。

  • 将奇数位置(1,3,5等)的数字乘以2.

  • 从高于9的任何结果中减去9。

  • 求和所有数字。

  • 校验位(卡的最后一个号码)是您的金额 需要添加以获得10的倍数(Modulo 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;
                    }

我现在停留在下一步:/。我该怎么做?谢谢!

1 个答案:

答案 0 :(得分:0)

下一步:

  

将奇数位置(1,3,5等)的数字乘以2。

这要求您在输入数字中迭代所有数字。有两种方法可以做到这一点:

  1. 或多或少与您第一次尝试摆脱最后一位数字相同 - 您可以使用模数/除法运算以与之前类似的方式“访问”数字中的每个数字!
  2. 或者,不要使用一个数字,而是考虑将整数转换为int值数组,例如;如图所示here。现在您可以迭代该数组并进行必要的计算。 最后,只需将数组“合并”回一个数字即可。您甚至可以提前,以摆脱最后一位数。
  3. 希望这有助于让你继续进行剩余的练习!