2015-04-21 3 views
2

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

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

вент Ладор 13 мужской Taguig

Пито dingal 26 самцов Pateros

доны Martinez 24 мужчина Hagonoy

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 Ладор 13 мужской Taguig Пито dingal 26 мужской Pateros Dony Martinez 24 самец Hagonoy

Желаемый выход:

венти Ладор 13 самцов Taguig

Пито dingal 26 самцов Pateros

dony martinez 24 мужчина hagonoy

+0

Пожалуйста, убедитесь, что ваш вопрос отформатирован правильно, чтобы мы могли понять, каков ваш текущий выход и каков ваш желаемый результат. Линейные перерывы теряются в переводе, и почти невозможно следовать. – Claudio

+0

Сколько элементов в ценности после выполнения разделения? Вы хотите, чтобы все элементы находились на одной линии или разбиты на несколько строк? Сколько элементов в строке вы хотите? – Shar1er80

+0

Будьте более ясны в отношении того, какие ваши входы и какие вы хотите, чтобы ваши выходы были. Теперь, когда у вас есть «рабочий» код, зайдите в свой файл sampletxt.txt и разделите строки в файле на большее количество строк и будете ли вы получать ожидаемые результаты, которые вы хотите?Хорошо, что вы получили свой код для работы, но лучше понять (для обучения) другие сценарии данных, которые вы могли бы иметь, и ваш код может обрабатывать все сценарии. – Shar1er80

ответ

3

Измените условие

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

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

Вы бы что-то вроде этого:

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

Итак, что произойдет, если первая строка, прочитанная из файла, имеет 3 значения, а следующая строка, прочитанная из файла, имеет 5 значений? – Shar1er80

+0

@ Shar1er80 Отредактировано, спасибо за это. –

+0

Я все еще не думаю, что это получит то, что хочет OP, что звучит так, как каждая строка будет иметь одинаковое количество значений с возможностью того, что последняя строка может иметь значения lass на нем. – Shar1er80

1

Вам не нужно, если заявление на разрыв строки, просто поставить свой Println() после вашей цикл.

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); 
    } 
} 
+0

Кажется, он хочет это сделать. Я имею в виду, чтобы распечатать прерывание строки каждые x количество элементов. – Claudio

+0

О, да, это то, что я хочу сказать спасибо помощнику! –

+0

@matinikestugante Мое редактирование должно дать вам желание, которое вы ищете. – Shar1er80

 Смежные вопросы

  • Нет связанных вопросов^_^