|
![]() |
#1 |
Premium
Datum registracije: Jan 2003
Lokacija: Zagreb
Postovi: 2,937
|
Čitanje stringova iz datoteke
Jezik je java. Dakle imam datoteku sa redovima koji jednako izgledaju: PRVARIJEČ - DRUGARIJEČ = X - Y Ja znam kako čitati te redove, ali kako recimo da čitam samo prvu riječ i spremim ju u varijablu tipa string. Pa drugu i onda i nju spremim. Isto bi išlo i sa brojevima (X i Y) samo moram parseint koristit da pretvorim string u broj jer je njegova varijabla tipa integer. |
![]() |
![]() |
![]() |
#2 |
Umalo Premium
Datum registracije: Jan 2009
Lokacija: localhost
Postovi: 61
|
Pozdrav! Ne bi bilo dobro koristiti String za tu namjenu, pogotovo ako je datoteka velika. Bolje je koristiti StringBuilder jer je kod njega kod spajanja manja je vremenska složenost. Evo kod: Code:
import java.io.*; class files { public static void main(String[] args) { try { String linija; BufferedReader in = new BufferedReader(new FileReader("file.txt")); StringBuilder text= new StringBuilder(); while ((linija = in.readLine()) != null) { text.append("\n" + linija); } System.out.println(text); } catch (Exception e) { System.err.println("Error: " + e.getMessage()); } } } |
![]() |
![]() |
|
|
Oglas
|
|
![]() |
#3 |
Premium
Datum registracije: Jan 2003
Lokacija: Zagreb
Postovi: 2,937
|
Mislim da nisi skroz razumio moj problem. Dakle imam tu datoteku koja u sebi već ima nekih 50-tak linija koje sve izgledaju onako kako sam gore objasnio. E sad bi dijelove tih linija trebao staviti u atribute određenog objekta. Jedan atribut je String (RIJEČ), a drugi je Integer (X). |
![]() |
![]() |
![]() |
#4 |
Umalo Premium
Datum registracije: Jan 2009
Lokacija: localhost
Postovi: 61
|
Evo, varijanta u kojoj se riječi stavljaju u 2D polje. Na ktaju datoteke file.txt treba biti znak &. Code:
import java.io.*; class files { public static void main(String[] args) { try { char slovo; int i = 0; int j = 0; BufferedReader in = new BufferedReader(new FileReader("file.txt")); String[][] rijec = new String[100][100]; rijec[0][0] = ""; while((slovo = (char)in.read()) != '&') { if (slovo == '\n') { System.out.println(rijec[i][j]); i++; rijec[i][j] = ""; } else if (slovo == ' ') { System.out.println(rijec[i][j]); j++; rijec[i][j] = ""; } else { rijec[i][j] += slovo; } } } catch (Exception e) { System.err.println("Error: " + e.getMessage()); } } } I, sada ti možeš članove polja na određenim mjestima kastati u int i raditi s njima što treba... |
![]() |
![]() |
![]() |
#5 |
Premium
Datum registracije: Jan 2003
Lokacija: Zagreb
Postovi: 2,937
|
Ok probao sam to ubacit s tim da sam stavio "System.out.println(rijec);" nakon elsa tako da vidim šta će mi izbacivat i konzola mi nekakve reference izbacuje (valjda su to reference...) [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 PRVARIJEČ [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 - [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 DRUGARIJEČ [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 X [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 - [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 [[Ljava.lang.String;@1fb8ee3 Y ... I pitanje, zašto baš 2D polje treba bit? |
![]() |
![]() |
![]() |
#6 |
Umalo Premium
Datum registracije: Jan 2009
Lokacija: localhost
Postovi: 61
|
Pa izpisuje stalno referencu na prvi element polja. Šta će ti te reference?! Makni to. 2D polje sam koristio da bih lakše učitao podatke iz datoteke. Sada možemo ljepše ispisati to na ekran: Code:
import java.io.*; class files { public static void main(String[] args) { try { char slovo; int ii = 0; int jj = 0; int i = 0; int j = 0; BufferedReader in = new BufferedReader(new FileReader("file.txt")); String[][] rijec = new String[100][100]; rijec[0][0] = ""; while((slovo = (char)in.read()) != '&') { if (slovo == '\n') { i++; rijec[i][j] = ""; } else if (slovo == ' ') { j++; rijec[i][j] = ""; } else { rijec[i][j] += slovo; } } for(ii = 0; ii <= i; ii++) { for(jj = 0; jj <= j; jj++) if(rijec[ii][jj] != null)System.out.print("\t" + rijec[ii][jj]); System.out.println(""); } } catch (Exception e) { System.err.println("Error: " + e.getMessage()); } } } |
![]() |
![]() |
![]() |
#7 |
Premium
Datum registracije: Jan 2003
Lokacija: Zagreb
Postovi: 2,937
|
Sad mi konzola hiti Error: 100. Mislim meni opće netreba taj ispis nego na taj način pokušavam shvatit što se točne dogodilo gdje pa da znam dijelove hitat u objekte... Konkretno ja trebam napravit: rijec = "PRVARIJEC"; nekiBroj = parseInt(X); (nisam siguran dal ovo ide tocno ovako...) if (rijec == objekt.getName()){ objekt.setBroj(nekiBroj); } itd. |
![]() |
![]() |
![]() |
#8 | |
Unregistered User
Datum registracije: Aug 2006
Lokacija: Našice
Postovi: 426
|
Citiraj:
![]() |
|
![]() |
![]() |
|
|
Oglas
|
|
![]() |
|
|