elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  No consigo pasar fichero .txt a vector tipo int
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: No consigo pasar fichero .txt a vector tipo int  (Leído 2,701 veces)
thehiphapper


Desconectado Desconectado

Mensajes: 464



Ver Perfil
No consigo pasar fichero .txt a vector tipo int
« en: 14 Agosto 2013, 15:09 pm »

El fichero contiene lo siguiente:


3
3
0   2   2
1   1   2
2   3   2
3   1   4
4   2   2
5   3   4
6   1   4
7   1   2
8   3   3
9   1   4


Quería almacenar todo esto en: int Numeros[];

He probado a leer el fichero caracter por caracter y me lo lee bien, haciendo uso de la clase fileread, para que lo imprima bien hago:

Código
  1. int caract = fr.read();
  2.  
  3.   //Se recorre el fichero hasta encontrar el carácter -1
  4.   //   que marca el final del fichero
  5.   while(caract != -1)
  6.   {
  7.       //Mostrar en pantalla el carácter leído convertido a char
  8.  
  9.       System.out.print((char)caract);  
  10.             caract = fr.read();
  11.   }

Si no hago la conversion a tipo caracter, no me visualiza bien los numeros(me muestra otros numeros distintos), descarte esa opcion y probé con otro código, esta vez usando las clases FileInputStream, DataInputStream, BufferedReader y StringTokenizer. Ahora me pone null al ejecutar el siguiente codigo:

Código
  1. while ((strLinea = buffer.readLine()) != null)   {
  2.  
  3.  
  4.                StringTokenizer st = new StringTokenizer(strLinea, "\t");
  5.                while (st.hasMoreTokens()) {
  6.  
  7.                            System.out.println(st.nextToken());
  8.  
  9.  
  10.                    Numeros[cont]=Integer.parseInt(st.nextToken());
  11.                cont++;    
  12.                }
  13.  
  14.            }


¿cual es la manera mas sencilla y efectiva de pasar mi fichero .txt a int Numeros[]?


Gracias.


« Última modificación: 17 Agosto 2013, 15:21 pm por Debci » En línea

La droga quimica extrapeligrosa,
causante de la perdida de vidas hermosas,
es una plaga mundial no cualquier cosa,
un mal de sangre y el diablo se lo goza.
1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: No consigo pasar fichero .txt a vector tipo int
« Respuesta #1 en: 14 Agosto 2013, 18:06 pm »

Antes de insertar comprueba si es un número.

Código
  1. private static boolean isNumber(String value) {
  2.    try {
  3.           Integer.parseInt(value);
  4.           return true;
  5.    } catch(NumberFormatException e) {
  6.           return false;
  7.    }
  8. }
  9.  

Código
  1. if(isNumber(String.valueOf(st.nextToken()))) {
  2.    int num = Integer.parseInt(String.valueOf(st.nextToken()));
  3.    //guardar en array
  4. }
  5.  

Saludos.


« Última modificación: 14 Agosto 2013, 18:37 pm por Darhius » En línea

abc
thehiphapper


Desconectado Desconectado

Mensajes: 464



Ver Perfil
Re: No consigo pasar fichero .txt a vector tipo int
« Respuesta #2 en: 15 Agosto 2013, 11:07 am »

Muchas gracias, muy ingenioso. Hay un pequeño problema, he puesto puntos de ruptura y la variable num, no coge ningún valor, debería cogerlo en la siguiente linea:

            
Código
  1.  int num = Integer.parseInt(String.valueOf(st.nextToken()));

En cambio cuando pasa de esa linea sin coger ningún valor, va directamente a:

Código
  1. catch (Exception e){ //Catch de excepciones
  2.            System.err.println("Ocurrio un error: " + e.getMessage());
  3.        }

el error que da es: Ocurrio un error: null

¿el error podría deberse a que cada vez que se llama a st.nextToken, analiza el siguiente string?,

No se si me explico, si por ejemplo el string es "1 Hola que tal", La clase StringTokenizer la primera vez que llamas a st.nextToken te llama al método isNumber y como es un numero retorna verdadero, pero a la hora de pasar el valor 1 a num, se llama de nuevo a st.nextToken por lo que intenta pasar "hola" a la variable entera num.
« Última modificación: 17 Agosto 2013, 15:23 pm por Debci » En línea

La droga quimica extrapeligrosa,
causante de la perdida de vidas hermosas,
es una plaga mundial no cualquier cosa,
un mal de sangre y el diablo se lo goza.
1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: No consigo pasar fichero .txt a vector tipo int
« Respuesta #3 en: 15 Agosto 2013, 17:19 pm »

Código
  1. private static void readFile() {
  2.        try {
  3.            FileReader file = new FileReader("Numbers.txt");
  4.            BufferedReader buffered = new BufferedReader(file);
  5.            String line;
  6.            while ((line = buffered.readLine())!=null) {
  7.                StringTokenizer tokenizer = new StringTokenizer(line);
  8.  
  9.                while (tokenizer.hasMoreTokens()) {
  10.                    String value = tokenizer.nextToken();
  11.                    if(isNumber(value)) {
  12.                        int num = Integer.parseInt(value);
  13.                        System.out.print("["+num+"]"+",");
  14.                        //Guardar en arreglo.
  15.                    }
  16.                }
  17.            }
  18.        } catch (FileNotFoundException fnfe){
  19.            fnfe.printStackTrace();
  20.        } catch (IOException ioe){
  21.            ioe.printStackTrace();
  22.        }
  23.   }
  24.  

Código
  1. private static boolean isNumber(String value) {
  2.        if(value!=null && !value.trim().equals("")) {
  3.            try {
  4.                Integer.parseInt(value);
  5.                return true;
  6.            } catch(NumberFormatException e) {
  7.                return false;
  8.            }
  9.        } else {
  10.            return false;
  11.        }
  12.    }
  13.  
En línea

abc
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
pasar matriz a vector
Programación C/C++
mapers 1 5,247 Último mensaje 11 Diciembre 2010, 04:59 am
por Siuto
Pasar tipo byte a tipo word sin uso de movs?
ASM
Morringos 3 5,238 Último mensaje 1 Abril 2011, 11:44 am
por Eternal Idol
Depurar tipo vector con IDE Eclipse
Programación C/C++
novalida 0 2,499 Último mensaje 2 Octubre 2011, 20:13 pm
por novalida
De fichero a Vector
Programación C/C++
chihue 2 2,320 Último mensaje 22 Diciembre 2014, 15:57 pm
por Yoel Alejandro
Copiar fichero a vector strings
Programación C/C++
ElFontaneroGRNA 5 3,719 Último mensaje 16 Enero 2017, 08:36 am
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines