[java] Tokeny - prośba o pomoc

0

public class Vypocet extends ArrayList {

public void readFromTextFile(String fileName) {
this.clear();
FileReader fr = null;
try {
fr = new FileReader(fileName);
BufferedReader bfr = new BufferedReader(fr);
String s;
while ((s = bfr.readLine()) != null) {
System.out.println(s);
//Obec o = new Obec();
StringTokenizer st = new StringTokenizer(s, "\t");

} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
fr.close();
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

}

Mam taki kodzik...

Wczytuje mi plik, który mu wkładam w takim formacie.

Trinec 567 842 780 400 800 900
Malenovice 500 700 800 1000
Katowice 345 210 347 759
Budapeszt 560 480 480 450 3000

Dla sprawdzenia zamontowałam sobie w pętli licznik zliczający ilość tokenów i pod każdą linią pojawiała się liczba zgodna faktycznie z ilością pól, które chciałam. Stąd wnioskuję, że plik wczytuje się dobrze.

I teraz pytania:

  1. Jak odwołać się do poszczególnych tokenów?
  2. Czy żeby pracować z wartościami tokenów muszę zmienić ich typ ze String na Integer?

Z góry dzięki za rady!

0

Najlatwiej:

String s= "bla\tbla\tbla";
String[] tab = s.split('\t');
tab.length daje Ci ilosc tokenow
tab[i] daje Ci i-ty token
Integer.parseInt(tab[i]) zwroci Ci integera z i-tego tokena
0
Alenka napisał(a)
  1. Jak odwołać się do poszczególnych tokenów?
  2. Czy żeby pracować z wartościami tokenów muszę zmienić ich typ ze String na Integer?

Z góry dzięki za rady!

ad 1.

while(st.hasMoreTokens())
{
System.out.println(st.nextToken());
}

Poza tym nie polecam stringtokenizer i zalecam czytanie dokumentacji Java.
ad 2.
Jak chcesz operować na nich jako na intach to tak, dziwne pytanie.

0

Dziękuję wam za rady.

Jestem początkująca. W dodatku tylko pomagam stąd może nielogiczne pytania.

Czytałam coś nie coś o funkcji split i próbowałam ją już zastosować jednak mam problem, ponieważ dane wpisuję w pliku, który wybiera sobie użytkownik i nie wiem, jak to wpisać w tą komendę, żeby to s to była zawartość pliku wypełnionego podobnymi danymi jak w moim pierwszym poście. :-)

Dzięki!
Alka

0
Alenka napisał(a)

Dziękuję wam za rady.

Jestem początkująca. W dodatku tylko pomagam stąd może nielogiczne pytania.

Czytałam coś nie coś o funkcji split i próbowałam ją już zastosować jednak mam problem, ponieważ dane wpisuję w pliku, który wybiera sobie użytkownik i nie wiem, jak to wpisać w tą komendę, żeby to s to była zawartość pliku wypełnionego podobnymi danymi jak w moim pierwszym poście. :-)

Dzięki!
Alka
??Nie wiem w czym problem? Wczytujesz w pętli daną linię i dzielisz określonym separatorem i jeśli chcesz operować na intach to

while ((s = bfr.readLine()) != null) {
System.out.println(s);
String[] strs = s.split("separator");
for(String str:strs)
{
try{
int x = Integer.parseInt(str);
//x operacje
}catch(NumberFormatException e)
{
}
} 
0

Dziękuję bardzo za pomoc. Zaraz postaram się to jakoś zastosować.

Mam nadzieję, że w razie dalszych problemów pomożecie... :-)

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