Как прочитать каждое целое число в строке из файла на Java? - PullRequest
0 голосов
/ 26 мая 2019

У меня есть файл, который имеет n строк целых чисел.Я хочу добавить каждое int в каждой строке и напечатать их (поэтому я должен напечатать 3 int в конце, каждый для строки).

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

scan = new Scanner(new BufferedReader(new FileReader("input.txt")));
int n = scan.nextInt();
for (int i = 0; i < n; i++) {
    while (scan.hasNextLine()) {
         sum += scan.nextInt();
    }
    System.out.println(sum);
    sum = 0;
}

Ответы [ 2 ]

2 голосов
/ 26 мая 2019

Это поведение вызвано ошибочным использованием циклов и сканирований.Одно из правильных решений также включает в себя лямбда-выражения java 8 с предположением, что разделителем целых чисел в файле является пробел (""):

    Path path = Paths.get("your path");
    try{
        Files.lines(path)
                .map( line -> line.split(" "))
                .mapToInt( numbers -> Arrays.stream(numbers)
                   .reduce(0 , (sum, num) -> sum + Integer.parseInt(num), (first, second) -> first + second ))
                .forEachOrdered(System.out::println);

    } catch (IOException e){
        e.printStackTrace();
    }
0 голосов
/ 28 мая 2019

Думаю, я тоже мог бы это сделать ...

read = new Scanner(new BufferedReader(new FileReader("input.txt")));
int n = read.nextInt(), j;
int sum = 0;
for (int i = 0; i < n; i++) 
{
    String[] str;
    int t = read.nextInt();
    // First str will be ""(it reads the end of each line) 
    str = read.nextLine().split(" ");
    // Then it can read what we want
    str = read.nextLine().split(" ");
    for (j = 0; j < str.length; j++) 
    {
        sum += Integer.parseInt(str[j]);
    }
    System.out.println(sum);
    sum = 0;                
} 
...