comprobar tarjeta de credito/algoritmo de luhn

package tarjeta_de_credito; import java.util.Scanner; public class Tarjeta_de_credito { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); int tarjeta; System.out.println("Introduzca los 4 primeros digitos de su tarjeta: "); tarjeta = entrada.nextInt(); if (tarjeta >= 510 && tarjeta <= 559) { System.out.println("La tarjeta es Mastercard"); } else if (tarjeta >= 4000 && tarjeta <= 4999) { System.out.println("La tarjeta es visa"); } else if (tarjeta >= 3400 && tarjeta <= 3799) { System.out.println("La tarjeta es american express"); } else if (tarjeta >= 3000 && tarjeta <= 3059) { System.out.println("La tarjeta es diners club"); } else if (tarjeta >= 4000 && tarjeta <= 4999) { System.out.println("La tarjeta es visa"); } else if (tarjeta == 6011) { System.out.println("La tarjeta es discover"); } else if (tarjeta == 6520) { System.out.println("La tarjeta es palacio del hierro"); } String numero= entrada.nextLine(); System.out.println("Ahora introduzca su tarjeta hasta el penultimo numero sin espacios ni guiones"); numero = entrada.nextLine(); System.out.println(luhnTest(numero)); } public static boolean luhnTest(String numero){ int s1 = 0, s2 = 0; String reversa = new StringBuffer(numero).reverse().toString(); for(int i = 0 ;i < reversa.length();i++){ int digito = Character.digit(reversa.charAt(i), 10); if(i % 2 == 0){//this is for odd digits, they are 1-indexed in the algorithm s1 += digito; }else{//add 2 * digit for 0-4, add 2 * digit - 9 for 5-9 s2 += 2 * digito; if(digito >= 5){ s2 -= 9; } } } System.out.println("La tarjeta es:"); return (s1 + s2) % 10 == 0; } }

2 Responses

¿Como seria el código en C sin usar arreglos?
No sé

Write a comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.