java problem - tablice/pliki

0

Hej, mam problem - zaczynam zabawe z Java - mam plik z danymi, pierwsze 4 linie to moje dane wejsciowe, 5-ta linia to moj wynik, kolejne 4 to wejscia, po nich znow wynik, itd przez kilkaset linii, dla przykladu:
123
234
345
456
567
Mam tez zmienna typu string, w ktorej mam rownanie typu: q0 + q1 + q2 + q3 = q4.
Chcialbym zamienic zawartosc tego stringa wartosciami z pliku, pierwsza linia z q0, druga z q1, trzecia z q2, czwarta z q3. Do samej zamiany uzylbym cos w stylu

String mojString = "";
mojString.replaceAll("(?:qX)", tu-wartosc-z-pliku);

Czy powinienem wczytac ten plik w calosci do tablicy stringow, czy czytac go po kawalku? Jak to zrobic, zeby przeczytac 4 linie, podmienic ich wartosci z tymi z mojString, przeczytac 5-ta, znow cos zrobic, i od nowa, kolejne 4, i 5-ta itd? Jakies zagniezdzone petle?

0
  1. Jesli plik jest na tyle mały żeby zmieścić się w pamieci to lepiej wczytać w całości bo operacje I/O są bardzo kosztowne
  2. Tak, na przykład za pomocą pętli.
0

Plik ma okolo 600 linii.

@Shalom: za pomoca petli, czyli np

for (int i=0, i<600, i++)
tempString[i] = kolejne_wiersze //tak moge przebiegac przez cala tablice, jak rozumiem, po wczytaniu z pliku

ale nie bardzo wiem jak to upakowac w druga petle, czy nawet trzecia(?), zeby wybrac te 4 linie-wejscia, przetworzyc, wybrac 5-ta linia-wyjscie, znow cos zrobic, i isc dalej, jak opisalem w pierwszym poscie. Masz moze jakis pomysl? Czytam "Thinking in Java", ale nie moge tam znalezc odpowiedzi na taki problem.

0

Widzę, że nawet jest klasa http://docs.oracle.com/javase/1.4.2/docs/api/java/io/LineNumberReader.html która automatyzuje dostęp do konkretnych linii w pliku.

@Shalom: wszystko oczywiście można zrobić ręcznie, ale po co, skoro są do tego gotowe klasy?

0

Hej, skoro juz jestesmy przy plikach, nie bede zakladal nowego tematu i zapytam tutaj - mam plik z tekstem, i zmienia sie w nim jedna liczba, dla przykladu:

linia1linia1linia1
linia2linia2linia2
linia3Tutaj_zmieniajaca_sie_liczba linia3linia3linia3
linia4linia4linia4linia4

chcialbym w jakis sposob przeszukac ten plik, pobrac do zmiennej linie z porzebna wartoscia i jakos wyekstrahowac ta wartosc z tej linii. Niestety, ta wartosc sie zmienia, liczba linii w pliku tez sie zmienia. Istnieja jednak pewne stale elementy tego pliku, wiec moglbym czytac plik linia po linii az trafie na taki staly element, a potem jeszcze pare linii do tej szukanej. Najlatwiej byloby chyba uzyc string.compare, ale nie zadziala przy zmiennej zawartosci linii. Jakies wyrazenia regularne moze? Ktos moglby zaproponowac rozwiazanie?

Hej, znalazlem rozwiazanie, wiec mozna zamknac/skasowac temat.
Wyszukalem staly element w pliku, wczytalem linie do stringa, znalazlem fajna klase StringTokenizer, wiec string podzielilem na kawalki, a potem indexOf("staly_element_potrzebnego_tokena") i substring(my_index_of). Dzieki wszystkim za chec pomocy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1