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
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.