2016-09-26 7 views
-1

Я пытаюсь написать java-программу, которая читает texfile по строкам и сохраняет каждую строку в своем собственном массиве, чтобы эти строки стали столбцами данных. Например, файл data.txt ниже, имеет следующие данные:Java чтение текстового файла и сохранение каждой строки в собственном массиве

  • 122,80,100,119,162,90,136 ...
  • 122,80,100,119,162,90,136 ...
  • 64,74,70,64, 76,62,84,78 ...
  • положительный, отрицательный, отрицательный ...

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

BufferedReader br = new BufferedReader(new FileReader("C://data.txt")); 
     ArrayList lines = new ArrayList(); 
     for(String line = br.readLine();line != null;line = br.readLine()) { 
      line.replaceAll(",","\\."); 
      String[] fields = line.split(" "); 
      System.out.println(" " + fields[0]); 
      lines.add(fields); 
     } 
     String[][] strings = (String[][]) lines.toArray(new String[lines.size()][]); 
     System.out.println("Total Lines: " + strings.length); 

Вот ожидаемый результат:

output

+0

Вы можете использовать List of List (not arrays), это проще. – Tokazio

+1

'line' - это уже строка, вы помещаете эту' строку' в коллекцию: 'ArrayList ', вы можете перебрать эту коллекцию. –

+2

Что значит «слиты вместе»? Где вы видите, что он слит вместе? Я вижу массив создаваемых массивов. Что вы ожидаете, и что происходит вместо этого? – RealSkeptic

ответ

0

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

BufferedReader br = new BufferedReader(new FileReader("C:\\data.txt")); 
ArrayList lines = new ArrayList(); 
for(String line = br.readLine();line != null;line = br.readLine()) { 
    //comma will be replaced with . 
    line=line.replaceAll(",","\\."); 
    //each line will be stored in an array with . as separator 
    String[] fields = line.split("\\."); 
    //System.out.println(" " + fields[0]); 
    lines.add(fields); 
} 
String[][] strings = (String[][]) lines.toArray(new String[lines.size()][]); 
System.out.println("Total Lines: " + strings.length); 

//code to display 
for(String s[]:strings){ 
    for(String ss:s){ 
     System.out.print(ss+", "); 
    }System.out.println(); 
} 

Его выход

Total Lines: 4 
122, 80, 100, 119, 162, 90, 136, 
122, 80, 100, 119, 162, 90, 136, 
64, 74, 70, 64, 76, 62, 84, 78 , 
positive, negative, negative , 
0

Я думаю, что это то, что вам нужно:

 BufferedReader br = new BufferedReader(new FileReader("C://data.txt")); 
     ArrayList<String[]> lines = new ArrayList<String[]>(); 
     for(String line = br.readLine();line != null;line = br.readLine()) { 
      String[] fields = line.split(","); 
      lines.add(fields); 
     } 
     System.out.println("Total Lines: " + lines.size()); 
     for(String[] lns:lines) { 
      for (int i = 0; i < lns.length; i++) { 
       if (i == lns.length - 1) System.out.print(lns[i] + "\n"); else System.out.print(lns[i] + ", "); 
      } 
     } 

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

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