Как прочитать форматированный ввод в Java?
Вопрос
Предположим, мой входной файл содержит:
3 4 5 6 7 8
9
10
Я хочу запустить цикл while и прочитать целые числа, чтобы после каждой итерации цикла я получал 3,4,5,6,7,8 и 10 соответственно.
Это действительно просто сделать на C/C++, но не на Java...
Я попробовал этот код:
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) {
}
и что я получаю:
51
540287029
540418080
538982176
151599117
171511050
218762506
825232650
Как мне прочитать целые числа из этого файл в Джава?
Решение
Можно использовать Scanner
класс и его nextInt
метод:
Scanner s = new Scanner("3 4 5 6");
while (s.hasNext()) {
System.out.println(s.nextInt());
}
Выход:
3
4
5
6
В основном по умолчанию Scanner
объект будет игнорировать любые пробелы и получит следующий токен.
А Scanner
класс как конструктор что требует InputStream
в качестве источника потока символов, поэтому можно использовать FileInputStream
который открывает источник текста.
Заменить Scanner
создание экземпляра в приведенном выше примере со следующим:
Scanner s = new Scanner(new FileInputStream(new File(filePath)));