Test Foro de elhacker.net SMF 2.1

Programación => Programación General => 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:

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 (java) [Seleccionar]
public Integer getNumberByRange(String directory, String fileName, Integer number) {
Integer numberToReturn = null;
Path path = Paths.get(directory, fileName);
Charset charset = Charset.forName("UTF-8");
try {
// lee todas las lineas del fichero
List<String> lines = Files.readAllLines(path, charset);

Integer temporal = 0;
for (String line : lines) {
// divide la linea separando por espacios
String[] tokens = line.split(" ");
// asumimos solo los dos primeros lugares (rango - numero a devolver)
Integer range = Integer.parseInt(tokens[0]);
if(number > temporal && number < range)
numberToReturn = Integer.parseInt(tokens[1]);
temporal = range,
}
} catch (IOException e) {
logger.warning(e.getMessage());
} catch (NumberFormatExceptio e2) {
logger.warning(e2.getMessage());
}

return numberToReturn;
}


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 (java) [Seleccionar]
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 (java) [Seleccionar]
File file = new File("D://prueba/rangos.txt");
try {
Scanner sc = new Scanner(file);
while (sc.hasNextLine()) {
String[] tokens = sc.nextLine().split(" ");
// el mismo proceso
}
sc.close();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
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