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!
Hola,
Prueba lo siguiente:
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í:
objeto.getNumberByRange("D://prueba", "rangos.txt", 2580);
Saludos.
Gracias, asi mas o menos me hago una idea, pero necesito que sea con un Scanner...
¿Alguna cuestión en especial para usar Scanner en lugar del API estándar para manejo de archivos?
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();
}
exigencias del profesor ;D
Muchas gracias!1111111 ;)
Jaja, si lo manda el profe, pues a hacerlo (aunque a veces se equivoquen :xD).
jajaja yo a obedecer calladico xD
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