Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Sixtoex en 14 de Noviembre 2014, 18:54

Título: [Java] Comprobar si un correo esta bien escrito o no: validación email
Publicado por: Sixtoex en 14 de Noviembre 2014, 18:54
Obviamente se le puede hacer muchas cosas mas, solo lo hice con el @, se podría hacer con el punto tambien :)

Código: [Seleccionar]
import javax.swing.JOptionPane;
public class Calculos_conMath {
 
public static void main(String[] args) {
    String correo = new String(JOptionPane.showInputDialog("Escribe su correo electronico"));
    int longitud = correo.length();
    char valor;
   
    for(char i = 0; i < longitud; i++)
    {
    valor = correo.charAt(i);
        if(valor == '@' && i == 0){
        System.out.println("El correo esta mal");
        break;
        }
    if(valor == '@')
    {
    System.out.println("Escribistes perfectamente el correo");
    break;
    }
    else if(i == longitud-1){
    System.out.println("El correo esta mal");
    break;
   
    }
   
   
      }

   }

}
Título: Re:[Java] Comprobar si un correo esta bien escrito o no
Publicado por: Mastermind en 14 de Noviembre 2014, 19:40
Hola, el código está bien pero que la clase se llame Calculos_conMath no tiene sentido ninguno (supongo que será un olvido :P )  :D
Título: Re:[Java] Comprobar si un correo esta bien escrito o no
Publicado por: Sixtoex en 14 de Noviembre 2014, 19:48
Hola, el código está bien pero que la clase se llame Calculos_conMath no tiene sentido ninguno (supongo que será un olvido :P )  :D
Exactamente, siempre utilizo la misma clase propia para las pruebas...
Título: Re:[Java] Comprobar si un correo esta bien escrito o no
Publicado por: Jorge lopez en 14 de Noviembre 2014, 20:08
 Hola Sixtoex!

Veo que tu programa trata de notificar al usuario cuando se escribe una dirección de correo electrónico de manera correcta o incorrecta, el criterio que has especificado para que el programa decida cuando esta bien o cuando esta mal se basa en el carácter '@' y como bien dices, has omitido otros criterios a tomar en cuenta para aumentar la eficiencia de tu programa, por ejemp: si el correo contiene o no un punto, si el correo contiene o no caracteres que en realidad no admite un correo, si el correo escrito es solo arrobas, donde por ejemp si le pasas el String " @@@@@@@" este te dice: "Escribistes perfectamente el correo" y muchos otros criterios que si no se toman en cuenta, podrían afectar la eficiencia de tu programa.

A la hora de diseñar un código, es preferible no omitir lo que es obvio presentara una deficiencia en nuestros programas, así los críticos que revisen tu código (en este caso yo)
se llevaran una buena impresión por ver un trabajo bien pensado y elaborado.

Aun tomando en cuenta que tu programa solo se basa en la presencia del carácter '@' en el String que indique el usuario, no puedo decir que tu programa funciona correctamente, ya que devuelve un dato erróneo ante un String "erróneo" como por ejemp: " @@@@@@@icuantas@massequieranincluir.com" donde el programa dice: "Escribistes perfectamente el correo".

En cuanto al código en si, me parece que el nombre de la clase no es un nombre apropiado. No has colocado un modificador de acceso (public, protected o private) a las variables de clase como es lo normal y según la situación.

Mis sugerencias: Rediseña el código de tu clase, tomando en cuenta las anteriores criticas constructivas para crear un programa mas eficiente.

Saludos!
Título: Re:[Java] Comprobar si un correo esta bien escrito o no
Publicado por: Sixtoex en 14 de Noviembre 2014, 20:16
Como me gusta hacer las cosas bien, en algunos minutos te hice esto:

Metodo: recibe como parámetro una dirección de e-mail y mediante una expresión regular y las clases Pattern y Matcher comprueban  si cumple con el patrón de la expresión regular dada para validar dicho e-mail:


 
Código: [Seleccionar]
/**
     * Valida si es correcta la dirección de correo electrónica dada.
     *@param email
     *@return true si es correcta o false si no lo es.
     */
    protected static boolean esEmailCorrecto(String email) {
       
        boolean valido = false;
       
        Pattern patronEmail = Pattern.compile("^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)(\\.[A-Za-z]{2,})$");
   
        Matcher mEmail = patronEmail.matcher(email.toLowerCase());
        if (mEmail.matches()){
           valido = true; 
        }
        return valido;
    }
Título: Re:[Java] Comprobar si un correo esta bien escrito o no
Publicado por: Jorge lopez en 14 de Noviembre 2014, 20:16
 Como que dos personas estábamos respondiendo un mismo tema a la vez  :o

Hola Mastermind! no es que yo contradiga tu respuesta, sino que soy un poquito exigente  ;D ;D

Saludos compañero!
Título: Re:[Java] Comprobar si un correo esta bien escrito o no
Publicado por: Sixtoex en 14 de Noviembre 2014, 20:19
Como que dos personas estábamos respondiendo un mismo tema a la vez  :o

Hola Mastermind! no es que yo contradiga tu respuesta, sino que soy un poquito exigente  ;D ;D

Saludos compañero!
Que te parece el nuevo código  ;D
Título: Re:[Java] Comprobar si un correo esta bien escrito o no
Publicado por: Jorge lopez en 14 de Noviembre 2014, 20:59
 Le estoy pasando el String "correocorrecto@hotmail.com" que para mi es un mail correcto, pero me devuelve false, y no he conseguido que me devuelva true sin modificar el patrón, te a funcionado correctamente este metodo? estoy yo indicando como parámetro un "correoincorrecto@@hitmail.c0m" ?
Título: Re:[Java] Comprobar si un correo esta bien escrito o no
Publicado por: Mastermind en 16 de Noviembre 2014, 16:30
Me parece bien ser exigente Jorge, así es como se llega a ser un master! Saludos!!