0

我对此真的很陌生。我正在尝试使用 Luhn 算法来验证“人号”(瑞典社会保险号)。我认为代码几乎完成了,但我不知道在“birthDate.length()”和“pos”类中放入什么才能使其工作。birthDate.length 需要确保字符串长度为 10 位,并且验证控制需要“pos”。

package kund;
import java.util.Scanner;

public class Kund {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        System.out.println("Welcome customer. Please login by using your "
                + "birthdate (yymmddxxxx)");
        Scanner input = new Scanner (System.in);
        String birthDate = input.next();

        int length = birthDate.length();
        int sum = 0;

        for (int i = 1; pos=length-1; i<=10; i++, pos--){
            char tmp = birthDate.charAt(pos);
            int num = Integer.parseInt(String.valueOf(tmp));

            int produkt;

            if (i % 2 != 0){
                produkt = num * 1;
            }else {
                produkt = num * 2;
            }
            if ( produkt > 9 )
                produkt -= 9;
            sum += produkt;

            boolean korrekt = (sum % 10) == 0;

            if (!korrekt){
                System.out.println("Invalid.");

            }else if(korrekt){
                System.out.println("Correct");
            }
        }
    }

}
4

1 回答 1

1

您的代码语法不正确。您的 for 循环在循环头中有 4 个组件,而不是 3 。我移动了 pos=length-1; 事物到一个语法正确的位置。我不知道算法应该如何工作,所以我无法检查程序现在在语义上是否正确。

但是,我假设您有瑞典社会安全号码并且可以轻松检查。

package kund;

import java.util.Scanner;

public class Kund {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        System.out.println("Welcome customer. Please login by using your "
                + "birthdate (yymmddxxxx)");
        Scanner input = new Scanner (System.in);
        String birthDate = input.next();

        int length = birthDate.length();
        int sum = 0;
        int pos = length-1;
        for (int i = 1; i<=10; i++, pos--){
            char tmp = birthDate.charAt(pos);
            int num = Integer.parseInt(String.valueOf(tmp));

            int produkt;

            if (i % 2 != 0){
                produkt = num * 1;
            }else {
                produkt = num * 2;
            }
            if ( produkt > 9 )
                produkt -= 9;
            sum += produkt;

            boolean korrekt = (sum % 10) == 0;

            if (!korrekt){
                System.out.println("Invalid.");
            }else if(korrekt){
                System.out.println("Correct");
            }
        }
    }
}
于 2014-10-13T09:13:22.693 回答