Foro de elhacker.net

Programación => Java => Mensaje iniciado por: marrison en 29 Marzo 2015, 18:17 pm



Título: Ayuda con algoritmo en java
Publicado por: marrison en 29 Marzo 2015, 18:17 pm
Hola buenas, estoy aprendiendo a programar en java y tengo un problemilla....  :silbar:

Tengo un fichero del estilo:
Código:
1001 1
2001 2
3001 3

El usuario introduce un numero cualquiera y el algoritmo busca en que intervalo esta, si esta entre 0 y 1001 devuelve un 1, si esta entre 1001 y 2001 devuelve un 2 y asi...

Tengo que leer los datos del fichero con la clase scanner pero no encuentro la forma...

Hay que tener en cuenta que los valores pueden cambiar, se pueden introducir mas o menos...

Alguna ayuda?

Muchas gracias de antemano, un saludo!


Título: Re: Ayuda con algoritmo en java
Publicado por: Usuario Invitado en 29 Marzo 2015, 18:49 pm
Hola,

Prueba lo siguiente:

Código
  1. public Integer getNumberByRange(String directory, String fileName, Integer number) {
  2. Integer numberToReturn = null;
  3. Path path = Paths.get(directory, fileName);
  4. Charset charset = Charset.forName("UTF-8");
  5. try {
  6. // lee todas las lineas del fichero
  7. List<String> lines = Files.readAllLines(path, charset);
  8.  
  9. Integer temporal = 0;
  10. for (String line : lines) {
  11. // divide la linea separando por espacios
  12. String[] tokens = line.split(" ");
  13. // asumimos solo los dos primeros lugares (rango - numero a devolver)
  14. Integer range = Integer.parseInt(tokens[0]);
  15. if(number > temporal && number < range)
  16. numberToReturn = Integer.parseInt(tokens[1]);
  17. temporal = range,
  18. }
  19. } catch (IOException e) {
  20. logger.warning(e.getMessage());
  21. } catch (NumberFormatExceptio e2) {
  22. logger.warning(e2.getMessage());
  23. }
  24.  
  25. return numberToReturn;
  26. }

Donde temporal es el número anterior. Itera rango por rango, verifica que el número ingresado sea mayor a temporal (número anterior) y que sea menor al rango, si es así, guarda el número a devolver. Finalmente, lo retorna.

Llamas al método así:

Código
  1. objeto.getNumberByRange("D://prueba", "rangos.txt", 2580);


Saludos.


Título: Re: Ayuda con algoritmo en java
Publicado por: marrison en 29 Marzo 2015, 19:17 pm
Gracias, asi mas o menos me hago una idea, pero necesito que sea con un Scanner... 


Título: Re: Ayuda con algoritmo en java
Publicado por: Usuario Invitado en 29 Marzo 2015, 19:35 pm
¿Alguna cuestión en especial para usar Scanner en lugar del API estándar para manejo de archivos?

Código
  1. File file = new File("D://prueba/rangos.txt");
  2. try {
  3. Scanner sc = new Scanner(file);
  4. while (sc.hasNextLine()) {
  5. String[] tokens = sc.nextLine().split(" ");
  6. // el mismo proceso
  7. }
  8. sc.close();
  9. }
  10. e.printStackTrace();
  11. }


Título: Re: Ayuda con algoritmo en java
Publicado por: marrison en 30 Marzo 2015, 18:22 pm
exigencias del profesor  ;D

Muchas gracias!1111111 ;)


Título: Re: Ayuda con algoritmo en java
Publicado por: Usuario Invitado en 30 Marzo 2015, 18:39 pm
Jaja, si lo manda el profe, pues a hacerlo (aunque a veces se equivoquen :xD).


Título: Re: Ayuda con algoritmo en java
Publicado por: marrison en 30 Marzo 2015, 23:40 pm
jajaja yo a obedecer calladico xD


Título: Re:
Publicado por: yum-kax en 31 Marzo 2015, 00:15 am
Esta bueno igual que ademas de hacer lo que pida el profe, vos por tus medios veas diferentes formas de hacerlo y entiendas las líneas de código que te dio Gus Garsaky!

Un saludo y espero que sigas con hambre de conocimiento,y no solo cumplimiento