Wpis z mikrobloga

Taki problem:
Mam następujący plik txt, z którego mam pobrać dane.

23.4;24.3;24.2
25.4;25.3;27.2
28.4;23.3;12.2
22.4;25.3;21.2
25.4;100;20.2
27.4;23.3;21.2
29.4;25.3;19.2
21.2;22.3;21.2

Zakładam, że nie wiem ile jest wierszy i kolumn. Jest możliwość, żeby czytając kolejny wiersz pliku zapisywać pobrane dane bezpośrednio do tabeli typu double?

Radzę sobie z tym trochę topornie, bo najpierw pętlą zliczam ile mam wierszy(Ad.1) i to samo tyczy się kolumn(Ad.2).
Dopiero mając te dane jeszcze raz jadę pętlą (Ad.3) i wpisuje dane do tabeli[liczbaWierszy][liczbaKolumn].

// (Ad.1)
public static int zwrocWiersze(String path) throws FileNotFoundException {

File plik = new File(path);
Scanner sc = new Scanner(plik);
String[] tab = null;
int wielkoscTablicy = 0;
while (sc.hasNextLine()) {
tab = sc.nextLine().split("[;]");
wielkoscTablicy++;
}
sc.close();
return wielkoscTablicy;

}
//(Ad.2)
public static int zwrocKolumny(String path) throws FileNotFoundException {

File plik = new File(path);
Scanner sc = new Scanner(plik);
String[] tab = null;
int iloscKolumn = 0;
while (sc.hasNextLine()) {
tab = sc.nextLine().split("[;]");

// sc.close();
}

return iloscKolumn = tab.length;

}

//(Ad.3)
public static double[][] odczytPliku(String path, int wielkoscTablicy, int iloscKolumn)
throws FileNotFoundException {
File plik = new File(path);
Scanner sc2 = new Scanner(plik);
String[] tablica = new String[wielkoscTablicy];
double[][] tabTemperatur = new double[wielkoscTablicy][iloscKolumn];

int k = 0;
while (sc2.hasNextLine()) {
tablica = sc2.nextLine().split("[;]");

for (int i = 0; i < tablica.length; i++) {
tabTemperatur[k][i] = Double.parseDouble(tablica[i]);

}
k++;
}

sc2.close();
return tabTemperatur;

}

#java
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Zakładam, że nie wiem ile jest wierszy i kolumn. Jest możliwość, żeby czytając kolejny wiersz pliku zapisywać pobrane dane bezpośrednio do tabeli typu double?


Radzę sobie z tym trochę topornie, bo najpierw pętlą zliczam ile mam wierszy(Ad.1) i to samo tyczy się kolumn(Ad.2).

Dopiero mając te dane jeszcze raz jadę pętlą (Ad.3) i wpisuje dane do tabeli[liczbaWierszy][liczbaKolumn].


@albert011111: Nie czytając Twojego kodu..co ja
  • Odpowiedz
Niestety arraylista odpada, wiem, ze jest przyjemniejsza bo mozna dynamicznie zmieniac jej wielkosc ale w tym zadaniu mam do wykorzystania tylko standardowa tabele.
  • Odpowiedz
@albert011111: możesz użyć biblioteki STL i tam uzyć jednej z dynamicznych stuktur.. oj pszepraszam toż to dżawa.. to se sam zbuduj np. liste dwukierunkową na wskaźnikach... oj przepraszam.. w dżawie chyba nie ma wskaźników..
  • Odpowiedz