чтение int из текста построчно - PullRequest
0 голосов
/ 01 марта 2019

у меня есть 3-строчный текст int, который представляет собой данные, которые мне нужно поместить в некоторые переменные, я хочу получить доступ один за другим ко всем, как массив, я могу прочитать первую строку, но не знаю, как перейти кСледующая строка, я знаю, что это глупо, но я заблокирован

public void Load () throws IOException {
    BufferedReader   in = new BufferedReader(new FileReader("prova.txt"));

    String inputLine = in.readLine();
    String [] fields = inputLine.split(" "); // Splits at the space
    int i=0;
    while(inputLine!=null) {
    System.out.println(fields[i]); //prints out name
    i++;
    }

}

Я хочу получить доступ к единственному целому для любой строки, какие-либо советы?

Ответы [ 4 ]

0 голосов
/ 01 марта 2019

Что вы делаете неправильно, так это то, что вы прочитали только первую строку и пытаетесь напечатать все, что есть в первой строке, непрерывно увеличивая значение i , что в итоге приведет к исключению нулевого указателя. У меня естьпробовал так же, как вы делаете это.Дайте мне знать, если у вас есть какие-либо вопросы.

public class Snippet {
public static void Load() throws IOException {
    BufferedReader in = new BufferedReader(new FileReader("prova.txt"));

    String inputLine = in.readLine();
    // Splits at the space

    while (inputLine != null) {
        int i = 0;
        String[] fields = inputLine.split(" ");
        while (i < fields.length) {
            System.out.println(fields[i]); // prints out name
            i++;
        }
        inputLine = in.readLine();
    }

}

}

Я занимаюсь здесь чтением каждой строки, разбив ее по пробелам и выводя все, что появилось на первой строке, а затемпрочитайте следующую строку в конце цикла.

0 голосов
/ 01 марта 2019

Используйте API Java NIO.

Path myPath = Paths.get("prova.txt")
List<String> contents = Files.readAllLines(myPath)
for(String line : contents) {
    System.out.println(line);
}
0 голосов
/ 01 марта 2019

Вы должны выполнить итерацию дважды: один раз над строками в файлах (например, используя Files.lines(...)), а затем над полями в строке (например, с помощью цикла for).Примерно так:

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

public class Snippet {
    public static void main(String[] args) throws IOException {
        new Snippet().Load();
    }

    public void Load() throws IOException {
        Files.lines(new File("prova.txt").toPath()).forEach(line -> {
            String[] fields = line.split("\\s"); // Splits at the space
            for (String field : fields) {
                System.out.println(field);
            }
            System.out.println();
        });

    }
}

HTH!

0 голосов
/ 01 марта 2019

Вы можете получить все строки из файла, используя Files.readAllLines() из java8:

List<String> lines = Files.readAllLines(Paths.get("prova.txt"));

for (String line : lines) {
    String[] split = line.split(" "));
    // use element access by index to do what you want
}

Также, если вы знакомы с потоковым API:

Files.lines(Paths.get("prova.txt"))
        .flatMap(s -> Arrays.stream(s.split(" ")))
        .forEach(System.out::println);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...