Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
2.4 kB
1
Indexable
Never

Ejercicio 2 (2 Puntos)

Habrá que crear un programa que contenga un método estático validarNSS que validará un
número de la seguridad social. Se le pasará como parámetro (numeroSS) un String y devolverá
un booleano indicando si el código es correcto según el formato correspondiente.

El número de afiliación a la seguridad social consta de cuatro partes:
XX-aa-bbbbbbbb-cc
        
        Los 2 primeros caracteres (XX) son letras cualesquiera del alfabeto.
        
        Los 2 primeros dígitos (a) son un indicaivo de la provincia
        
        Los 8dígitos centrales (b) son el nº del asegurado dentro de cada provincia.
        
        Los 2 dígitos finales (c) son dígitos de control.
        
        Cabe la posibilidad de que el número de la seguridad social se escriba sin guiones.


Los dígitos de control (c) se obtienen a partir de las otras dos partes (a) y (b) de la siguiente
forma:
        si (b<10000000) entonces d= b + a * 10000000
        
        si no d= valor numérico de (a concatenado con b)
        c = d % 97 //resto de la división entera

----------------------------------------------------------------------------------------------------------------

public static boolean isNSS(String nss) 
{
   // String regEx = "^[A-Z]{2}-[0-9]{2}-[0-9]{8}-[0-9]{2}$";
    String regex = "^[A-Z]{2}-[0-9]{2}-[0-9]{8}-[0-9]{2}$|^[A-Z]{2}[0-9]{12}$";
//String regEx = "^[A-Z]{2}-?[0-9]{2}-?[0-9]{8}-?[0-9]{2}$|^[A-Z]{2}[0-9]{12}$";
//    String regex = "^[A-Z]{0,2}[0-9]{8}[A-Z]?$";

 
    if (nss.matches(regex)) {
        System.out.println("ESTOY POR AQUÍ");
        nss = nss.replaceAll("-", "");
        String a = nss.substring(0, 2);
        String b = nss.substring(2, 4);
        String c = nss.substring(4, 12);
//        String num4 = nss.substring(12, 14);
String d = nss.substring(nss.length() - 2);

        long num4Calc;

        if (Integer.parseInt(c) < 10000000) {
            num4Calc = Long.parseLong(c) + Long.parseLong(b) * 10000000;
        } else {
            System.out.println(b);
            System.out.println(c);
            num4Calc = Long.parseLong(b) + Long.parseLong(c);
            System.out.println(num4Calc);
        }

        long validacion = num4Calc % 97;
        String strnum4 = String.valueOf(validacion);

        return strnum4.equals(d);
    }

    return false;
}