Как прочитать форматированный ввод в Java?

StackOverflow https://stackoverflow.com/questions/1414444

  •  06-07-2019
  •  | 
  •  

Вопрос

Предположим, мой входной файл содержит:

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)));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top