当前位置: 首页 > 知识库问答 >
问题:

用带字符串的Luhn算法在Java中验证信用卡

卓胜
2023-03-14

我试图创建一个方法来验证信用卡号,但我们必须将其作为字符串处理

1954年,IBM的Hans Luhn提出了一种验证信用卡号码的算法。该算法有助于确定是否正确输入了卡号或扫描仪是否正确扫描了信用卡。几乎所有的信用卡号码都是根据这种有效性检查生成的,通常称为Luhn检查或模数10检查,可以描述如下。为了说明,请考虑卡号4388576018402625。

从右到左每秒数字加倍。如果一个数字的倍增导致一个2位数字,将这两个数字相加得到一位数字。2×2=4

2×2=4

4×2=8

将步骤1中的所有个位数相加4+4+8+2+3+1+7+8=37

将卡号从右到左奇数位的所有数字相加

static void CreditCardValidator() {
    System.out.println("enter a credit card number");
    String temp = options.nextLine();

    if (temp.length() < 13 || temp.length() > 16) {
        System.out.println("Input is invalid");
    }

    // inside loop with char at command do all the math
    int tmpdouble;
    int sum = 0;
    int counter = temp.length() - 1;
    for (int i = temp.length(); i != 0; i--) {
        char tmp = temp.charAt(i);
        //tmp converted to int
        tmpdouble = tmp * 2;

        int firstDigit;
        int secondDigit;
        if (tmpdouble >= 10) {
            firstDigit = i / 10;
            secondDigit = i % 10;
            sum = sum + firstDigit + secondDigit;
        }

        else if(tmpdouble <= 9) {
            sum = sum + tmpdouble;
        }

    HELP HERE{
        // need to have it do the same thing as above but for odd numbers
    }

谢谢

共有1个答案

景鹏飞
2023-03-14

别自己卷。这个算法已经通过Commons提供了。

https://commons.apache.org/proper/commons-validator/apidocs/org/apache/commons/validator/routines/creditcardvalidator.html

 类似资料:
  • 问题内容: Bellow方法正在验证字符串是否为正确的IPv4地址,如果有效,则返回true。regex和优雅的任何改进将不胜感激: 问题答案: 这是一种易于阅读,效率稍低的方法。

  • 我试图用JAVA开发一个应用程序,它将检查用户输入的信用卡号是否有效。 下面是检查模数10的步骤: 步骤1:从右到左每秒数字加倍。如果一个数字的倍增导致一个两位数,则将这两个数字相加得到一个个位数。 步骤4:求和步骤2和步骤3的结果 步骤5:如果步骤4的结果可被10整除,则卡号有效;否则无效。在这种情况下,卡号无效--因为75不能被10整除。 到目前为止,我的问题是,我尝试的每一个卡号(使用有效的

  • 本文向大家介绍Go语言通过Luhn算法验证信用卡卡号是否有效的方法,包括了Go语言通过Luhn算法验证信用卡卡号是否有效的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Go语言通过Luhn算法验证信用卡卡号是否有效的方法。分享给大家供大家参考。具体实现方法如下: 输出结果 希望本文所述对大家的Go语言程序设计有所帮助。

  • 问题内容: 我对String串联感到困惑。 输出为: 50abc20 50abc1010 我想知道为什么在两种情况下都将 20 + 30 加在一起,但是 10 + 10 需要加上括号(s1)而不是串联到String(s2)。请在此处说明String运算符的工作方式。 问题答案: 加法保持关联。以第一种情况 在第二种情况下:

  • 我尝试使用Luhn算法检查信用卡的验证,该算法的工作步骤如下: 2*2=4 4*2=8 1*2=2 4*2=8 现在将步骤1中的所有个位数相加。 4+4+8+2+3+1+7+8=37 简单地说,我的程序总是对我输入的所有内容显示有效。即使它是一个有效的数字并且sumOfOddPlace和sumOfDoubleEvenPlace方法的结果等于零。 不胜感激。

  • 问题内容: 因此,我几乎搜索了单词“ string”,“ python”,“ validate”,“ user input”等等的每个排列,但是我还没有找到一种适合我的解决方案。 我的目标是提示用户是否要使用字符串“ yes”和“ no”进行另一笔交易,我认为字符串比较在Python中是一个相当简单的过程,但是有些不起作用对。我使用的是Python 3.X,据我所知,输入应使用字符串而不使用原始输