Чтение текстовых файлов и отображение данных с разрывом строки

Вот мой код для чтения текстового файла, но я не могу правильно организовать вывод содержимого файла.

Это содержимое файла:

Venti Lador 13 мужчин Taguig

Пито Дингал 26 мужской Патерос

дони мартинес 24 кобель хагоной

package testprojects;

import java.io.BufferedReader;
import java.io.FileReader;

public class ReadTextFile {
    public static void main(String args[]) throws Exception {
        BufferedReader bf = new BufferedReader(new FileReader("C://Users/PAO/Desktop/sampletxt.txt"));
        String line;

        while ((line = bf.readLine()) != null) {
            String[] value = line.split(" ");

            for (int x = 0; x < value.length; x++) {
                if (x >= 5) {
                    System.out.println();
                }
                System.out.print(value[x] + " ");
            }
        }
    }
}

Выход:

venti lador 13 мужчин taguig pito dingal 26 мужчин pateros дони мартинес 24 мужчин hagonoy

Желаемый результат:

Venti Lador 13 мужчин Taguig

Пито Дингал 26 мужской Патерос

дони мартинес 24 кобель хагоной

2 ответа

Решение

Измените ваше состояние на

if((x + 1) % 5 == 0 || (x == value.length - 1))

Так что он будет пропускать строку через каждые 5 данных или, если вы достигнете последних данных в вашей строке.

У вас будет что-то вроде этого:

System.out.print(value[x] + " " );
if((x + 1) % 5 == 0 || (x == value.length - 1))
    System.out.println();

Вам не нужен оператор if для разрыва строки, просто поместите свой println() после вашего цикла for.

public static void main(String[] args) throws Exception {    
    BufferedReader bf = new BufferedReader(new FileReader("C://Users/PAO/Desktop/sampletxt.txt"));

    String line;

    while((line=bf.readLine())!=null){
        String[] value=line.split(" ");

        for (String value1 : value) {
            System.out.print(value1 + " ");
        }
        System.out.println(""); // Goes to the next line after printing all values
    }
}

Если вам нужно определенное количество значений в строке (например, 5), попробуйте следующее:

public static void main(String[] args) throws Exception {    
    BufferedReader bf = new BufferedReader(new FileReader("C://Users/PAO/Desktop/sampletxt.txt"));

    String line;

    int count = 0;
    while((line=bf.readLine())!=null){
        String[] value=line.split(" ");

        for (String value1 : value) {
            System.out.print(value1 + " ");
            count++;

            if (count == 5) { // Five values per line before a line break
                System.out.println("");
                count = 0;
            }
        }
    }
}

Если вы просто распечатываете то, что находится в файле, я не понимаю, почему вы должны выполнить разделение. Вы разделяете на один пробел, а затем печатаете значения обратно с пробелом между каждым значением. Просто напечатайте строку, которая была прочитана из файла.

public static void main(String[] args) throws Exception {    
    BufferedReader bf = new BufferedReader(new FileReader("C://Users/PAO/Desktop/sampletxt.txt"));

    String line;
    while((line=bf.readLine())!=null){
        System.out.println(line);
    }
}
Другие вопросы по тегам