有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java根据位置更改数字

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

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

  • 把数字倒过来

  • 将奇数位置(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;
                    }

我现在陷入了下一步:/。我该怎么做?谢谢


共 (1) 个答案

  1. # 1 楼答案

    下一步:

    Multiply the digits in odd positions (1, 3, 5, etc.) by 2.

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

    1. 与您第一次尝试去除最后一个数字大致相同-您可以使用模/除运算“访问”数字中的每个数字,方法与以前类似 或,而不是工作在<强>一个/强>数字上,考虑把整数转换成一个int值数组,例如;如图所示here。现在您可以迭代该数组并进行必要的计算。 最后,只需将数组“合并”为一个数字。你甚至可以提前做,去掉最后一个数字

    希望这能帮助你完成剩下的练习