Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: MegumiLawliet en 09 de Marzo 2016, 03:43

Título: Creación de CURP en Java Clave Unica de Registro de Población CURP México
Publicado por: MegumiLawliet en 09 de Marzo 2016, 03:43
Estoy trabajndo con un codigo que al ejecutarse genere el CURP compuesto correcatamente.

http://www.condusef.gob.mx/index.php/clave­unica­de­registro­de­poblacion

Aún me hace falta:

1.- Sexo:​Concatenar la letra “M” cuando el usuario ingrese “Mujer” o “Femenino”; “H” para “Hombre” o “Masculino”. TIP: recuerda usar la función toLowerCase()​de String para
poder comparar la cadena en letras minúsculas.

2. Entidad Federativa​: Para esta ocasión, únicamente ingresa la clave del estado que
corresponde de acuerdo a la tabla de equivalencias descrita en las diapositivas.
Ej:
Estado: Guanajuato
Clave: GT

3. Consonantes internas​: Concatenar la 1er consonante interna del apellido paterno, 1er
consonante interna del apellido materno, 1a consonante interna del nombre. TIP: Utiliza
la función esVocal().

4. Homoclave​: Concatena el caracter alfabético que desees.

5. Dígito Verificador​: Investiga cómo generar un número aleatorio entre 0 ­ 9 y
concatenalo al final.



Mi codigo:


Código: [Seleccionar]
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package curp;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;
import java.util.Scanner;


/**
 *
 * @author sjm
 */
public class Curp {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
       
        /*Declaracion de variables*/
        String nombre;
        String aPaterno;
        String aMaterno;
        Date fechaNac;
        String lugarNacimiento;
        String sexo;
        String curp = new String();
       
        /*Ingreso de datos del usuario*/
        System.out.println("Escribe el nombre:");
        Scanner sc = new Scanner(System.in);
        nombre = sc.nextLine();
       
        System.out.println("Escribe el apellido paterno:");
        aPaterno = sc.nextLine();

        System.out.println("Escribe el apellido materno:");
        aMaterno = sc.nextLine();
       
        System.out.println("Escribe fecha de nacimiento (Formato yyyy/mm/dd):");
        try {
            fechaNac = new SimpleDateFormat("yyyy/MM/dd").parse(sc.nextLine()); //Convierte la fecha de tipo String a tipo Date con el formato indicado
            LocalDate fechaTemporal = fechaNac.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); //Convierte fecha Date a LocalDate para poder obtener dia, mes, año por separado
            int anio = fechaTemporal.getYear(); //Obtiene el año como numero entero
            int mes = fechaTemporal.getMonthValue(); //Obtiene el mes como numero entero
            int dia = fechaTemporal.getDayOfMonth(); //Obtiene el dia como numero entero
           
            System.out.println("Escribe lugar de nacimiento:");
            lugarNacimiento = sc.nextLine();

            System.out.println("Escribe el sexo:");
            sexo = sc.nextLine();

            /* Comienza genereacion de CURP*/
            curp += aPaterno.charAt(0);

            for(int i=1; i <= aPaterno.length()-1; i++){ //Recorre cada caracter del apellido paterno
                /*System.out.println("El caracter " + aPaterno.charAt(i) + " es vocal?" + esVocal(aPaterno.toLowerCase().charAt(i)));*/
                if(esVocal(aPaterno.charAt(i))){ //Si el caracter es vocal
                    curp+=aPaterno.charAt(i);    //Concatena el valor a curp
                    break;                       //Sale del ciclo
                }
            }

            curp += aMaterno.charAt(0);
            curp += nombre.charAt(0);
            curp += String.valueOf(anio).substring(2);// La función substring regresa los caracteres del string a partir de la posición indicada como paŕametro
            curp += mes <10? "0"+String.valueOf(mes):String.valueOf(mes); //Operador ternario: variable = condición ? valor1 : valor2;
                                                                         //El simbolo "?" funciona como if y ":" (dospuntos) funciona como else
                                                                         //Si el valor de mes es menor a 9, agrega un cero a la izquierda, si no, solo usa el valor del mes
            curp += String.valueOf(dia);
 
           
            System.out.println("CURP = " + curp);
       
            } catch (ParseException ex) { //Cuando ocurre una excepcion ParseException,
            System.out.println("Ocurio un error al convertir la fecha: " + ex.getMessage());
        }
       
    }
   
    public static boolean esVocal(char c){
        if(c=='a' || c=='e' || c=='i' || c=='o' || c =='u'){
            return true;
        }else{
            return false;
        }
    }
   
   
   
}
Título: Re:Creación de CURP en Java Clave Unica de Registro de Población CURP México
Publicado por: Alex Rodríguez en 10 de Marzo 2016, 19:28
Hola MegumiLawliet

Para pegar código en los foros revisa el hilo https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 y sigue lo que ahí se explica es la mejor forma para darle formato adecuado al código

El enlace que has puesto parece que no funciona, al menos a mí no me carga ninguna página

Si estás formándote en java te recomiendo el curso java desde cero: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

He encontrado este código para generar el curp no sé si te puede servir

Código: [Seleccionar]
package curp;

import org.apache.commons.lang.StringUtils;

import javax.swing.*;
import java.util.Arrays;
import java.util.Random;

public class CurpGenerator
{
// ------------------------------ FIELDS ------------------------------

    public static final String[] MESES =
        {"Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dec"};

    public static final String[] MESES_VALOR = {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"};

    public static String[] ENTIDAD_FEDERATIVA = {"AGUASCALIENTES",
                                                 "BAJA CALIFORNIA NTE.",
                                                 "BAJA CALIFORNIA SUR",
                                                 "CAMPECHE",
                                                 "COAHUILA",
                                                 "COLIMA",
                                                 "CHIAPAS",
                                                 "CHIHUAHUA",
                                                 "DISTRITO FEDERAL",
                                                 "DURANGO",
                                                 "GUANAJUATO",
                                                 "GUERRERO",
                                                 "HIDALGO",
                                                 "JALISCO",
                                                 "MEXICO",
                                                 "MICHOACAN",
                                                 "MORELOS",
                                                 "NAYARIT",
                                                 "NUEVO LEON",
                                                 "OAXACA",
                                                 "PUEBLA",
                                                 "QUERETARO",
                                                 "QUINTANA ROO",
                                                 "SAN LUIS POTOSI",
                                                 "SINALOA",
                                                 "SONORA",
                                                 "TABASCO",
                                                 "TAMAULIPAS",
                                                 "TLAXCALA",
                                                 "VERACRUZ",
                                                 "YUCATAN",
                                                 "ZACATECAS",
                                                 "SERV. EXTERIOR MEXICANO",
                                                 "NACIDO EN EL EXTRANJERO"};

    public static String[] ENTIDAD_FEDERATIVA_VALOR = {"AS",
                                                       "BC",
                                                       "BS",
                                                       "CC",
                                                       "CL",
                                                       "CM",
                                                       "CS",
                                                       "CH",
                                                       "DF",
                                                       "DG",
                                                       "GT",
                                                       "GR",
                                                       "HG",
                                                       "JC",
                                                       "MC",
                                                       "MN",
                                                       "MS",
                                                       "NT",
                                                       "NL",
                                                       "OC",
                                                       "PL",
                                                       "QT",
                                                       "QR",
                                                       "SP",
                                                       "SL",
                                                       "SR",
                                                       "TC",
                                                       "TS",
                                                       "TL",
                                                       "VZ",
                                                       "YN",
                                                       "ZS",
                                                       "SM",
                                                       "NE"};


    private static char[] VOCALS = {'A', 'E', 'I', 'O', 'U'};

    private static Random random = new Random();

// -------------------------- STATIC METHODS --------------------------

    public static String generar( String primerApellido, String segundoApellido, String nombres, String sexo,
                                  String fechaDeNacimiento, String entidadDeNacimiento )
        throws Exception
    {
        // limpiar los datos
        primerApellido = trim( primerApellido );
        segundoApellido = trim( segundoApellido );
        nombres = trim( nombres );
        sexo = trim( sexo );
        entidadDeNacimiento = trim( entidadDeNacimiento );

        // validar que los datos estan correctors
        String error =
            validarDatos( primerApellido, segundoApellido, nombres, sexo, fechaDeNacimiento, entidadDeNacimiento );
        if ( error != null )
        {
            throw new Exception( error );
        }

        // generar Curp
        StringBuilder curp = new StringBuilder();
        curp.append( primerApellido.charAt( 0 ) );
        curp.append( primeraVocal( primerApellido.substring( 1 ) ) );
        curp.append( segundoApellido.charAt( 0 ) );
        curp.append( nombres.charAt( 0 ) );
        curp.append( fechaDeNacimiento.substring( 8, 10 ) );
        curp.append( fechaDeNacimiento.substring( 0, 2 ) );
        curp.append( fechaDeNacimiento.substring( 3, 5 ) );
        curp.append( sexo );
        curp.append( entidadDeNacimiento );
        curp.append( primeraLetra( primerApellido.substring( 1 ) ) );
        curp.append( primeraLetra( segundoApellido.substring( 1 ) ) );
        curp.append( primeraLetra( nombres.substring( 1 ) ) );
        curp.append( 0 );
        curp.append( random.nextInt( 10 ) );
        return curp.toString();
    }

    public static String trim( String s )
    {
        return StringUtils.trimToEmpty( s ).toUpperCase();
    }

    private static char primeraLetra( String s )
    {
        int i = StringUtils.indexOfAnyBut( s, VOCALS );
        if ( i >= 0 )
        {
            return s.charAt( i );
        }
        return 'X';
    }

    private static char primeraVocal( String s )
    {
        int i = StringUtils.indexOfAny( s, VOCALS );
        if ( i >= 0 )
        {
            return s.charAt( i );
        }
        return 'X';
    }

    private static String validarDatos( String primerApellido, String segundoApellido, String nombres, String sexo,
                                        String fechaDeNacimiento, String entidadDeNacimiento )
    {
        if ( "".equals( primerApellido ) )
        {
            return "Primer apellido es obligatorio";
        }
        if ( !StringUtils.isAlpha( primerApellido ) )
        {
            return "Primer apellido no valido, caracteres validos: A-Z (incluso Ñ)";
        }

        if ( "".equals( segundoApellido ) )
        {
            return "Segundo apellido es obligatorio";
        }
        if ( !StringUtils.isAlpha( segundoApellido ) )
        {
            return "Segundo apellido no valido, caracteres validos: A-Z (incluso Ñ)";
        }

        if ( "".equals( nombres ) )
        {
            return "Nombre(s) es obligatorio";
        }
        if ( !StringUtils.isAlphaSpace( nombres ) )
        {
            return "Nombre(s) no valido, caracteres validos: A-Z (incluso Ñ)";
        }

        if ( !"H".equals( sexo ) && !"M".equals( sexo ) )
        {
            return "Sexo no valido";
        }

        if ( "".equals( fechaDeNacimiento ) )
        {
            return "Fecha de nacimiento no valido";
        }

        if ( "".equals( entidadDeNacimiento ) )
        {
            return "Entidad de nacimiento es obligatorio";
        }
        if ( !Arrays.asList( ENTIDAD_FEDERATIVA_VALOR ).contains( entidadDeNacimiento ) )
        {
            return "Entidad de nacimiento necesita ser la abreciacion";
        }

        return null;
    }
}

Saludos