Vérifier la validité de la carte de crédit en utilisant l'algorithme de Luhn

J'ai essayé de vérifier la validation de carte de crédit en utilisant l'algorithme de Luhn, qui fonctionne comme les étapes suivantes:

  1. Double à chaque seconde chiffres de droite à gauche. Si le doublement du chiffre résultats dans un nombre à deux chiffres, additionnez les deux chiffres pour obtenir un seul chiffre.

    2 * 2 = 4

    2 * 2 = 4

    4 * 2 = 8

    1 * 2 = 2

    6 * 2 = 12 (1 + 2 = 3)

    5 * 2 = 10 (1 + 0 = 1)

    8 * 2 = 16 (1 + 6 = 7)

    4 * 2 = 8

  2. Maintenant ajouter tous les nombres à un chiffre à partir de l'Étape 1.

    4 + 4 + 8 + 2 + 3 + 1 + 7 + 8 = 37

  3. Ajouter tous les chiffres dans les recoins de la droite vers la gauche dans le numéro de la carte.

    6 + 6 + 0 + 8 + 0 + 7 + 8 + 3 = 38

  4. La somme des résultats à partir de l'Étape 2 et l'Étape 3.

    37 + 38 = 75

  5. Si le résultat de l'Étape 4 est divisible par 10, le numéro de la carte est valide; sinon, elle est invalide. Par exemple, le nombre 4388576018402626 est pas valide, mais le nombre 4388576018410707 est valide.

Simplement, mon programme affiche toujours valable pour tout ce que j'en entrée. Même si c'est un nombre valide et le résultat de sumOfOddPlace et sumOfDoubleEvenPlace méthodes sont égaux à zéro.
Toute aide est appréciée.

import java.util.Scanner;
public class CreditCardValidation {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int count = 0;
long array[] = new long [16];
do
{
count = 0;
array = new long [16];
System.out.print("Enter your Credit Card Number : ");
long number = in.nextLong();
for (int i = 0; number != 0; i++) {
array[i] = number % 10;
number = number / 10;
count++;
}
}
while(count < 13); 
if ((array[count - 1] == 4) || (array[count - 1] == 5) || (array[count - 1] == 3 && array[count - 2] == 7)){
if (isValid(array) == true) {
System.out.println("\n The Credit Card Number is Valid. ");
} else {
System.out.println("\n The Credit Card Number is Invalid. ");
}
} else{
System.out.println("\n The Credit Card Number is Invalid. ");
}
}
public static boolean isValid(long[] array) {
int total = sumOfDoubleEvenPlace(array) + sumOfOddPlace(array);        
if ((total % 10 == 0)) {
for (int i=0; i< array.length; i++){
System.out.println(array[i]);}
return true;
} else {
for (int i=0; i< array.length; i++){
System.out.println(array[i]);}
return false;
}
}
public static int getDigit(int number) {
if (number <= 9) {
return number;
} else {
int firstDigit = number % 10;
int secondDigit = (int) (number / 10);
return firstDigit + secondDigit;
}
}
public static int sumOfOddPlace(long[] array) {
int result = 0;
for (int i=0; i< array.length; i++)
{
while (array[i] > 0) {
result += (int) (array[i] % 10);
array[i] = array[i] / 100;
}}
System.out.println("\n The sum of odd place is " + result);
return result;
}
public static int sumOfDoubleEvenPlace(long[] array) {
int result = 0;
long temp = 0;
for (int i=0; i< array.length; i++){
while (array[i] > 0) {
temp = array[i] % 100;
result += getDigit((int) (temp / 10) * 2);
array[i] = array[i] / 100;
}
}
System.out.println("\n The sum of double even place is " + result);
return result;
}
}

source d'informationauteur user3126388