2015-03-17 3 views
0

У меня есть текстовый файл, который выглядит следующим образом:Читайте конкретные строки и столбцы из файла с помощью Java

A B C D 
A 5 7 10 2 
B 1 5 4 20 
C 10 1 8 4 
D 5 7 4 2 

Так что, как предполагается, матрица и то, что я хочу сделать, это:

1) Чтобы получить имена векторов (что можно легко сделать, читая первую строку).

2) Чтобы визуализировать только цифры.

3) Сохранение чисел в 2D-массиве.

Я уже сделал первый шаг, остался вторым и третьим.

Это мой код:

LectureFichier.java:

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

public class LectureFichier { 

    public void lireFichier() { 

     BufferedReader br = null; 

     try { 

      String sCurrentLine; 

      br = new BufferedReader(new FileReader("myFile")); 

      sCurrentLine = br.readLine(); 

      System.out.println("*******************Lignes*******************"); 

      String[] nomsAuteurs = sCurrentLine.split(" "); 

      for(String auteur : nomsAuteurs) { 
       System.out.println(auteur); 
      } 

      System.out.println("*******************Colonnes*******************"); 

      while ((sCurrentLine = br.readLine()) != null) { 
       String[] colonnes = sCurrentLine.split(" "); 
       for(String colonne : colonnes) { 
        System.out.println(colonne); 
       } 
      } 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       if (br != null)br.close(); 
      } catch (IOException ex) { 
       ex.printStackTrace(); 
      } 
     } 

    } 

} 

Main.java:

public class Main { 

    public static void main(String[] args) { 

     LectureFichier lectureFichier = new LectureFichier(); 

     lectureFichier.lireFichier(); 

    } 

} 

Когда я запускаю этот код, он дает мне результат например:

A57102B15420C10184D5742

Именно из-за этого paragraphe:

for(String colonne : colonnes) { 
    System.out.print(colonne); 
} 

println(colonne) будет иметь каждый раскол в отдельной строке.

То, что я хочу сейчас, чтобы быть в состоянии иметь что-то вроде этого:

5 7 10 2 
1 5 4 20 
10 1 8 4 
5 7 4 2 

Что я сделал не так? и как я могу это исправить?

Спасибо!

ответ

1

Ваш код должен быть,

while ((sCurrentLine = br.readLine()) != null) { 
      String[] colonnes = sCurrentLine.split(" "); 
      for(int i=1; i<colonnes.length; i++) { 
       System.out.print(colonnes[i]+ " "); 
      } 
      System.out.println(); 
     } 

для вывода вы ожидали.

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

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