canal visual basic .net

Recursos Visual Basic.NET, VB.NET, Manuales de programación, Tutoriales, Foros de programación, Comunidad de programadores

Usuarios activos:  40

Foros de programación, recursos, tutoriales, sistemas operativos...

Bienvenido a la zona de foros. Participa en alguno de nuestros foros: Foros de visual basic, foros de visual basic.net foros de Crystal reports, programas gratis, foros de C++ - C# , foros de Java, foros de PHP, foros de ASP.net. Seguro que hay un foro que te servirá de gran utilidad y si no lo encuentras avísanos y crearemos uno nuevo.
Resultados 1 al 2 de 2
  1. #1
    luis12311 está desconectado Junior Member Iniciad@
    Fecha de ingreso
    18 ago, 09
    Mensajes
    22

    Question Ayuda, Problemas con StringTokenizer en Netbeans

    Hola a todos, al estar implementando un proyecto para mi universidad a base de arraylist y archivos de texto, por alguna razon cuando quiero ingresar por medio de mi login, me da error en java.util.StringTokenizer.nextToken y me vota error en java.util.NoSuchElementException.

    Código:
    Exception in thread "AWT-EventQueue-0" java.util.NoSuchElementException
        at java.util.StringTokenizer.nextToken(StringTokenizer.java:332)
        at Proyecto_Final.Inicio.btnloginActionPerformed(Inicio.java:177)
        at Proyecto_Final.Inicio.access$000(Inicio.java:29)
        at Proyecto_Final.Inicio$1.actionPerformed(Inicio.java:71)
    ....
    A continuacion les dejo la parte en donde me bota el error:

    GUI Inicio:

    Código:
    public Inicio() {
            initComponents();
            Icon imagen = new ImageIcon(getClass().getResource("/Imagenes/Candado.png"));
            lblFoto.setIcon(imagen);
            JFrame.setDefaultLookAndFeelDecorated(true);
            SubstanceLookAndFeel.setSkin("org.jvnet.substance.skin.CremeCoffeeSkin");
            SubstanceLookAndFeel.setCurrentTheme("org.jvnet.substance.theme.SubstanceBrownTheme");
            SubstanceLookAndFeel.setCurrentWatermark("org.jvnet.substance.watermark.SubstanceImageWatermark");
            SubstanceLookAndFeel.setCurrentWatermark(new SubstanceImageWatermark("Imagenes/1.png"));
            setTitle("INICIO SESION");
            setLocationRelativeTo(null);
        }
    
    private void btnloginActionPerformed(java.awt.event.ActionEvent evt) {                                         
    
        File f = new File("db_Usuario.txt");
        FileReader fr = null;
        String usuario =txtusuario.getText();
        String clave =String.valueOf(txtpass.getPassword());
        try {
            fr = new FileReader(f);
            BufferedReader br = new BufferedReader(fr);
            String linea;
            StringTokenizer st;
            boolean autoriza = false;
            while ((linea = br.readLine()) != null) {
                st = new StringTokenizer(linea, ";");
                st.nextToken();
                st.nextToken();
                st.nextToken();
                st.nextToken();
                st.nextToken();
                st.nextToken();
                String usu = st.nextToken();
                String cla = st.nextToken();
                
                /*String datos[] = linea.split(";");*/
                if (usuario.equalsIgnoreCase(usu) && clave.equalsIgnoreCase(cla)) {
                    autoriza = true;
                }
            }
            if (autoriza) {
                Principal p = new Principal();
                p.setVisible(true);
                this.setVisible(false);
            } else {
                JOptionPane.showMessageDialog(null, "Usuario Incorrecto","MENSAJE",2);
            }
        } catch (IOException ex) {
            System.out.println("Error al Abrir el Archivo");
        } finally {
            try {
                fr.close();
            } catch (IOException ex) {
                System.out.println("Error al cerrar el Archivo");
            }
        }
        
        
        
    }
    Y por alguna razon, cuando ver el problema en la consola de errores, mi netbenas me dirije automaticamente a
    mi clase Archivo_Usuario, siempre me esta dando problemas con mi StringTokenizer:

    Código:
    public class Archivo_Usuario extends Arreglo_Usuario{
        
        private String nombre;
    
        public Archivo_Usuario(String nombre){
    
            this.nombre= nombre;
            lee();
    
        }
    
        private void lee() {
            try {
                FileReader fr = new FileReader(nombre);
                BufferedReader br = new BufferedReader(fr);
                String linea;
                StringTokenizer st;
                while( (linea=br.readLine())!= null){
                    st = new StringTokenizer(linea,";");
                    String codigo = st.nextToken();
                    String nombres = st.nextToken();
                    String apellidos= st.nextToken();
                    String direccion= st.nextToken();
                    String celular = st.nextToken();
                    String e_mail = st.nextToken();
                    String usu = st.nextToken();
                    String clave = st.nextToken();
                    Agregar(codigo, nombres, apellidos,direccion, celular, e_mail, usu, clave);
                }
    
            } catch (IOException ex) {
                Logger.getLogger(Archivo_Usuario.class.getName()).log(Level.SEVERE, null, ex);
            }
    
    
        }
    
        public void graba(){
            
            FileWriter fw;
            try {
                fw = new FileWriter(nombre);
                PrintWriter pw = new PrintWriter(fw);
                for (int i = 0; i < Tamaño(); i++) {                
                Usuario u = getUsuario(i);
                pw.println(u.getCodigo()+";"+u.getNombres()+";"+u.getApellidos()+";"+u.getDireccion()+";"+u.getCelular()+";"+u.getE_mail()+";"+u.getUsu()+";"+u.getClave());
                }
                
                pw.close();
    
            } catch (IOException ex) {
                Logger.getLogger(Archivo_Usuario.class.getName()).log(Level.SEVERE, null, ex);
            }
    
    
        }
        
    }

  2. #2
    lareost está desconectado Senior Member Avanzad@
    Fecha de ingreso
    15 sep, 11
    Mensajes
    137

    Predeterminado

    No tengo ni idea sobre java, pero me parece que el problema es que tu asumes que la cadena guardada en la variable linea se puede dividir en una cantidad minima (cantidad de llamadas a nextToken()) de elementos y como parece ser que no es asi y no lo compruebas pues se produce un error en una de las llamadas a nextToken(). Deberias comprobar la cadena. Seguro que la clase StringTokenizer tiene un metodo para obtener la cantidad de elementos en que se ha dividido la cadena.

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Visual Studio .VisualBasic.net .ADO.NET .ASP.NET .Framework .Crystal report
[Visual Basic .NET · Información legal · Condiciones de uso · Publicidad · Contacto · RSS novedades Foro · Inicio]
Un sitio web de Internelia (Ontecnia) © Copyright 2013 canalvisualbasic.net. Todos los derechos reservados