Witam, standardowo przy wczytywaniu pliku używam BufferedReadera z FileReaderem. Proces wczytywania danych przebiega u mnie w 2 etapach: w pierwszym ustalam wymiary macierzy, w drugim wpisuję elementy do macierzy. Fragment pliku:
Type,Food Name,Calories,Protein,Fat,Carbohydrates,Calcium,Iron,Sodium,Vitamin A,Thiamin,Vitamin C
Cheese,American cheese,420,26.5,34.0,2.1,790,0.8,1291,1387,0.04,0
Juice,Apple juice, bottled,53,0.1,0.0,13.5,7,0.7,1,0,0.01,1
Kod:
package wyklad;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Projekt {
public static void main(String[] args) throws IOException{
BufferedReader x = new BufferedReader(new FileReader("dane.txt"));
String schowek; int a=0, b=1;
schowek = x.readLine();
for(int i=0; i<schowek.length();i++){
if (schowek.charAt(i)==','){
b++;
System.out.println("b " +b);
}
}
do{
a++;
schowek = x.readLine();
System.out.println("a " + a);
}
while(schowek!=null);
System.out.println(a+" " + b);
String tab[][] = new String[a][b];
for(int i=0; i<tab.length; i++){
for(int j=0; j<tab[0].length; j++){
tab[i][j]="_";
}
}
BufferedReader y = new BufferedReader(new FileReader("dane.txt"));
schowek = y.readLine();
int pamietajWiersz=0, pamietajKolumne;
do{
pamietajKolumne=0;
for(int i=0; i<schowek.length(); i++){
while(!(Character.toString(schowek.charAt(i))).equals(",")){
tab[pamietajWiersz][pamietajKolumne]+=Character.toString(schowek.charAt(i));
}
if(Character.toString(schowek.charAt(i)).equals(",")){
pamietajKolumne++;
}
System.out.println(tab[pamietajWiersz][pamietajKolumne]);
}
pamietajWiersz++;
schowek = y.readLine();
}
while(schowek!=null);
for(int i=0; i<tab.length; i++){
for(int j=0; j<tab[0].length; j++){
System.out.print(tab[i][j] + " ");
}
System.out.println();
}
}
}
Zadeklarowałem tablicę dwuwymiarową Stringów, w planach miałem, by program dodawał po 1 znaku z linijki, a w momencie natrafienia przecinka, przeskoczył linijkę dalej. Problem tkwi w drugiej pętli do {} while();