Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Error al intentar usar este metodo entorno grafico

Estas en el tema de Error al intentar usar este metodo entorno grafico en el foro de Java en Foros del Web. Hola gente estoy programando un contador de emails, y cree una clase que se llama Comprobar.java Código HTML: public class Comprobar { public boolean validos(String ...
  #1 (permalink)  
Antiguo 21/05/2015, 18:46
 
Fecha de Ingreso: junio-2011
Mensajes: 39
Antigüedad: 12 años, 10 meses
Puntos: 0
Error al intentar usar este metodo entorno grafico

Hola gente estoy programando un contador de emails, y cree una clase que se llama

Comprobar.java

Código HTML:
public class Comprobar {
    public boolean validos(String email){
        //uso indexof para buscar @ y el punto. si no lo tiene da error
        if(email.indexOf('@')<0 || email.indexOf('.')<0)
            return false;
        //busco que al principio y al final no hallan @
        else if(email.startsWith("@") || email.endsWith("@")){
        return false;
        }return true;
    }
}
y en un botón jButton2 tengo lo siguiente

Código HTML:
//Bufferreader para poder leer datos lo aplico al archivo que abri con try catch por si hay error
        BufferedReader lector=new BufferedReader(emails);
        int contador=0,cvalid=0,cinvalid=0;
        try {
            String emailscontados="";//inicializo emailscontados para poder usar while
            String respuesta="";
            while(emailscontados!=null){//repite hasta que emailscontados sea igual a null
                emailscontados=lector.readLine();//leo el archivo para ir verificando que no contenga null
                contador++;//voy sumando a contador para al final mostrar los emails contados
                
            }
        } catch (IOException ex) {
            jLabel1.setText(String.valueOf(ex));
        }
        
        
        jLabel3.setText(String.valueOf(cvalid));//Validas
        jLabel5.setText(String.valueOf(cinvalid));//Invalidas
        jLabel7.setText(String.valueOf(contador));//Total
Hasta aqui todo bien al momento de leer los emails y contarlos linea por linea de un archivo txt, el problema esta cuando intento aplicar mi metodo Comprobar, pues al agregar las siguientes lineas dentro del while

Código HTML:
emailscontados=lector.readLine();
                respuesta=String.valueOf(valido.validos(emailscontados));
para que me quede mi archivo así:

Código HTML:
//Bufferreader para poder leer datos lo aplico al archivo que abri con try catch por si hay error
        BufferedReader lector=new BufferedReader(emails);
        int contador=0,cvalid=0,cinvalid=0;
        try {
            String emailscontados="";//inicializo emailscontados para poder usar while
            String respuesta="";
            while(emailscontados!=null){//repite hasta que emailscontados sea igual a null
                /*emailscontados=lector.readLine();//leo el archivo para ir verificando que no contenga null
                contador++;//voy sumando a contador para al final mostrar los emails contados
                */
                emailscontados=lector.readLine();
                respuesta=String.valueOf(valido.validos(emailscontados));
                
            }
        } catch (IOException ex) {
            jLabel1.setText(String.valueOf(ex));
        }
        
        
        jLabel3.setText(String.valueOf(cvalid));//Validas
        jLabel5.setText(String.valueOf(cinvalid));//Invalidas
        jLabel7.setText(String.valueOf(contador));//Total
al dar clic en mi jButton2 (contar)


me sale el siguiente error



a que se puede deber? si uso mi metodo así: valido.validos("[email protected]");

me funciona a la perfección.
  #2 (permalink)  
Antiguo 22/05/2015, 01:13
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Error al intentar usar este metodo entorno grafico

Buenas,

Se debe a que en la linea 15 de tu clase Comprobar estas intentando acceder a una propiedad o metodo de un objeto que no esta inicializado (es null).

Seguramente la ultima vez que haces en el bucle:
emailscontados=lector.readLine();

La variable es null (de hecho es lo que compruebas en el if)


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 22/05/2015, 01:50
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Error al intentar usar este metodo entorno grafico

Hola:

Cuando vas leyendo, en algún momento lector.readLine() devolverá null al llegar al final de fichero. Como haces esto

emailscontados=lector.readLine();
respuesta=String.valueOf(valido.validos(emailscont ados));

en esa última iteración del bucle pasarás un null a validos.

El while deberías cambiarlo de esta forma para que sea más correcto

Código Java:
Ver original
  1. String emailscontados=lector.readLine();
  2. while (null!=emailscontados) {
  3.      ....
  4.      respuesta=String.valueOf(valido.validos(emailscontados));
  5.      emailscontados=lector.readLine();
  6. }

es decir, haz una primera lectura justo antes del while y pon las siguientes lecturas dentro del while como última línea del bucle.

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: clase, entorno, grafico, metodo, programa, string, usar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:18.