【问题标题】:Multiple errors on Luhn AlgorithmLuhn 算法的多个错误
【发布时间】:2018-09-29 18:28:27
【问题描述】:

我正在尝试获取用户输入的信用卡号并将其放入 Luhn 算法。当我运行代码时,我得到一个 conversion='i' 错误。拨打“检查”时,我也会收到一个两位数的号码。

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);
    System.out.print("Enter a credit card number (enter a blank line to quit): ");
    String ccNumber=keyboard.nextLine();
    long length2 = String.valueOf(ccNumber).length();

    int length = toIntExact(length2);

    if (length == 0) {
        System.out.print("Goodbye!");
        System.exit(0);
    }
    if (length  != 16) {
        System.out.println("ERROR! Number MUST have exactly 16 digits");
        System.exit(0);
    }
    int check = ccNumber.charAt(15);

    int sum = 0;
    boolean alternate = false;
    int i = length-1;
    while (i >= 0)
    {
            int n = Integer.parseInt(ccNumber.substring(i, i + 1));
            if (alternate)
            {
                    n *= 2;
                    if (n > 9)
                    {
                            n = (n % 10) + 1;
                    }
            }
            sum += n;
            alternate = !alternate;
            i--;
    }
    if (sum % 10 == 0) {
        System.out.printf("Check number should be: %i",check);
        System.out.printf("Number is valid\n");
    }
    else {
        System.out.printf("Check number should be: %s", check+"\n");
        System.out.printf("Number is NOT valid\n");
    }
    }
}

【问题讨论】:

  • 请注意,String.charAt() 返回一个字符。如果需要值,则需要将 ASCII 转换为 int(例如,char 1 的十进制值是 49,而不是 1)。
  • 我收到一个 conversion='i' 错误:这是什么意思?什么是完整和准确的错误? 调用'check'时我也得到一个两位数。:您发布的代码中没有检查方法。
  • 线程“main”中的异常 java.util.UnknownFormatConversionException: Conversion = 'i' at java.util.Formatter$FormatSpecifier.conversion(Unknown Source) at java.util.Formatter$FormatSpecifier.(Unknown Source) at java.util.Formatter.parse(Unknown Source) at java.util.Formatter.format(Unknown Source) at java.io.PrintStream.format(Unknown Source) at java.io.PrintStream.printf( Unknown Source) at osu.cse1223.Project06.main(Project06.java:44) 这是完整的错误

标签: java luhn


【解决方案1】:

替换这个

int check = ccNumber.charAt(15);

有了这个

int check = Character.getNumericValue(ccNumber.charAt(15));

System.out.printf("Check number should be: %i",check);

System.out.printf("Check number should be: %d\n",check);

System.out.printf("Check number should be: %s", check+"\n");

System.out.printf("Check number should be: %d\n", check);

【讨论】:

    猜你喜欢
    • 2013-08-10
    • 2015-01-01
    • 1970-01-01
    • 2021-05-16
    • 2023-04-05
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多