¿Cómo leo la entrada formateada en Java?
Pregunta
Suponga que mi archivo de entrada contiene:
3 4 5 6 7 8
9
10
Quiero ejecutar un ciclo while y leer enteros, para obtener 3,4,5,6,7,8 y 10 respectivamente después de cada iteración del ciclo.
Esto es realmente simple de hacer en C / C ++ pero no en Java ...
Probé este código:
try {
DataInputStream out2 = new DataInputStream(new BufferedInputStream(new FileInputStream(file)));
int i=out2.read();
while(i!=-1){
System.out.println(i);
i=out2.readInt();
}
} catch (IOException ex) {
}
y lo que obtengo es:
51
540287029
540418080
538982176
151599117
171511050
218762506
825232650
¿Cómo leo los enteros de este archivo en Java ?
Solución
Se puede usar el Scanner
clase y su Método nextInt
:
Scanner s = new Scanner("3 4 5 6");
while (s.hasNext()) {
System.out.println(s.nextInt());
}
Salida:
3
4
5
6
Básicamente, por defecto, el objeto Scanner
ignorará cualquier espacio en blanco y obtendrá el siguiente token.
El Scanner
clase como constructor que toma una InputStream
como la fuente de la secuencia de caracteres, por lo que se podría utilizar un FileInputStream
que abre la fuente del texto.
Reemplace la instanciación Scanner
en el ejemplo anterior con lo siguiente:
Scanner s = new Scanner(new FileInputStream(new File(filePath)));