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

Problema con buscar nombre en archivo csv...

Estas en el tema de Problema con buscar nombre en archivo csv... en el foro de Java en Foros del Web. Bueno la cosa es que ando un poco/mucho perdido en el tema de tratamiento de ficheros, la cosa es que lo leo y me sale ...
  #1 (permalink)  
Antiguo 20/09/2015, 10:36
 
Fecha de Ingreso: junio-2015
Mensajes: 11
Antigüedad: 8 años, 10 meses
Puntos: 0
Problema con buscar nombre en archivo csv...

Bueno la cosa es que ando un poco/mucho perdido en el tema de tratamiento de ficheros, la cosa es que lo leo y me sale el fichero por la consola. Pero a la hora de pedir el nombre por el scanner pues no me sale nada y se me queda en blanco.

Lo que quiero intentar hacer es, pedir un nombre de un pueblo al usuario y que me busque ese pueblo y que me salga todos los datos de ese pueblo.

Lo intenté con este código pero me sale el problema que dije anteriormente:

Código Java:
Ver original
  1. static void mostrarParadosPoblacion(){
  2.        
  3.         FileReader lectorfile;
  4.        
  5.         System.out.println("Dime que población quieres que te muestre:");
  6.         String pueblo = lector.nextLine();
  7.        
  8.         //8 posiciones para el pueblo, 9 para el paro total
  9.         try {
  10.             lectorfile = new FileReader(paro);
  11.            
  12.             BufferedReader datos = new BufferedReader(lectorfile);
  13.            
  14.             String frase = datos.readLine();
  15.            
  16.             System.out.println("Nombre de la localidad buscada: " + pueblo);
  17.                        
  18.             while(frase!=null){
  19.                 if(frase.split(";")[0].equalsIgnoreCase(pueblo)){
  20.                     System.out.println(frase.split(";")[0]);
  21.                     frase = datos.readLine();
  22.                 }
  23.             }
  24.                
  25.            
  26.             datos.close();
  27.         } catch (IOException e) {
  28.             e.printStackTrace();
  29.         }
  30.     }

Si me podriais ayudar os lo agradeceria bastante. Gracias de antemano.
  #2 (permalink)  
Antiguo 20/09/2015, 10:45
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: Problema con buscar nombre en archivo csv...

Buenas,

Estas tratando de leer la entrada del ususario como si de un fichero se tratase.

Deberias utilizar Scanner para leer la entrada del usuario.
Código Java:
Ver original
  1. Scanner sc = new Scanner(System.in);
  2. String entradaUsuario = sc.nextLine();


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 20/09/2015, 10:50
 
Fecha de Ingreso: junio-2015
Mensajes: 11
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: Problema con buscar nombre en archivo csv...

Cita:
Iniciado por Profesor_Falken Ver Mensaje
Buenas,

Estas tratando de leer la entrada del ususario como si de un fichero se tratase.

Deberias utilizar Scanner para leer la entrada del usuario.
Código Java:
Ver original
  1. Scanner sc = new Scanner(System.in);
  2. String entradaUsuario = sc.nextLine();


Un saludo
Es que lo que te he mostrado es una parte de todo el codigo, el scanner ya lo tengo puesto fuera, en un static:

Código Java:
Ver original
  1. static Scanner lector = new Scanner(System.in);

El problema no es ese, el problema se que esta en una parte del codigo que te mostre antes pero no lo encuentro...

El String pueblo es lo de la "entradaUsuario" que pusiste. Eso me sale bien, lo que pasa que no me sale toda la info que pido.. y se me queda en blanco.

El codigo completo seria esto:

Código Java:
Ver original
  1. package ac2;
  2.  
  3. import java.util.*;
  4. import java.io.*;
  5.  
  6. public class ut01_p02 {
  7.    
  8.     static Scanner lector = new Scanner(System.in);
  9.     static File paro = new File("./documentosrc/Paro.csv");
  10.    
  11.     public static void main(String[]args){
  12.        
  13.         int opcion = 0;
  14.        
  15.         do {
  16.             System.out.println("1- Muestrame el fichero completo");
  17.             System.out.println("2- Localizame los parados por poblacion");
  18.             System.out.println("3- Poblacion con mayor porcentaje de parados");
  19.             System.out.println("4- Poblaciones de la C.V. con menor tasa de paro");
  20.             System.out.println("0- Salir");
  21.             System.out.println("Dime la opcion que deaseas ver: ");
  22.             opcion = lector.nextInt();
  23.             lector.nextLine();
  24.             switch (opcion) {
  25.             case 1:
  26.                
  27.                 leerFicheroEntero();
  28.                 break;
  29.             case 2:
  30.                 mostrarParadosPoblacion();
  31.                 break;
  32.             case 3:
  33.                
  34.                 break;
  35.             case 4:
  36.                 break;
  37.            
  38.             }
  39.         } while (opcion!=0);
  40.        
  41.     }
  42.    
  43.         //este funciona
  44.     static void leerFicheroEntero(){
  45.        
  46.         FileReader lectorfile;
  47.        
  48.         try {
  49.             lectorfile = new FileReader(paro);
  50.            
  51.             BufferedReader datos = new BufferedReader(lectorfile);
  52.            
  53.             String frase = datos.readLine();
  54.             while(frase!=null){
  55.                 System.out.println(frase);
  56.                 frase = datos.readLine();
  57.             }
  58.            
  59.             datos.close();
  60.         } catch (IOException e) {
  61.             e.printStackTrace();
  62.         }
  63.     }
  64.    
  65.     static void mostrarParadosPoblacion(){
  66.        
  67.         FileReader lectorfile;
  68.        
  69.         System.out.println("Dime que población quieres que te muestre:");
  70.         String pueblo = lector.nextLine();
  71.        
  72.         //8 posiciones para el pueblo, 9 para el paro total
  73.         try {
  74.             lectorfile = new FileReader(paro);
  75.            
  76.             BufferedReader datos = new BufferedReader(lectorfile);
  77.            
  78.             String frase = datos.readLine();
  79.            
  80.             System.out.println("Nombre de la localidad buscada: " + pueblo);
  81.                        
  82.             while(frase!=null){
  83.                 if(frase.split(";")[0].equalsIgnoreCase(pueblo)){
  84.                     System.out.println(frase.split(";")[0]);
  85.                     frase = datos.readLine();
  86.                 }
  87.             }
  88.                
  89.            
  90.             datos.close();
  91.         } catch (IOException e) {
  92.             e.printStackTrace();
  93.         }
  94.     }
  95. }
  #4 (permalink)  
Antiguo 21/09/2015, 11:41
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: Problema con buscar nombre en archivo csv...

Buenas,

OK, ahora si que lo entiendo. Sin esas explicaciones seria imposible hacerlo sin poderer adivinatorios

Lo que tienes es un bucle infinito aqui:

Código Java:
Ver original
  1. while(frase!=null){
  2.                 if(frase.split(";")[0].equalsIgnoreCase(pueblo)){
  3.                     System.out.println(frase.split(";")[0]);
  4.                     frase = datos.readLine();
  5.                 }
  6.             }

Ya que frase nunca llega a ser null. No se... no deberias sacar el frase = datos.readLine() fuera del if?


Un saludo
__________________
If to err is human, then programmers are the most human of us

Etiquetas: nombre, string
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 22:21.