Witam,
mam następujący problem:
Po wczytaniu pliku z tekstem:
ala ma kota
kot ala pies pies ala
i "co tam, co tam" Ala! Kot? Pies;i kot
metoda countTokens() powinna zwrócić 18 wyrazów, eliminując separatory.
Zwraca natomiast 16 co ciekawe.
Nazwa pliku tekstowego jest argumentem wywołania programu.
Oto klasa:
package zadania1;
import java.util.;
import java.io.;
public class SortedWordsFromFile {
int n; // liczba słów
int i;
public SortedWordsFromFile(String txt) {
String path = System.getProperty("user.dir") + "/" + txt;
String temp = "";
try {
BufferedReader in = new BufferedReader(new FileReader(path));
StringBuffer sb = new StringBuffer();
String line;
while((line = in.readLine()) != null) {
sb.append(line).append('\n');
}
temp = sb.toString();
System.out.println(temp);
in.close();
} catch(IOException exc) {
exc.printStackTrace();
}
StringTokenizer st = new StringTokenizer(temp, " .,!?\"'\\()[]{}:;");
n = st.countTokens();
while(st.hasMoreTokens()) {
i++;
System.out.println(i + " " + st.nextToken());
}
}
public int getWordsCount() {
return n;
}
}
Druga klasa i metoda main:
package zadania1;
public class SortedTest {
public static void main(String[] args) {
SortedWordsFromFile swf = new SortedWordsFromFile(args[0]);
System.out.println("Wszystkich słów jest: " + swf.getWordsCount());
}
}
Oto wyjście:
ala ma kota
kot ala pies pies ala
i "co tam, co tam" Ala! Kot? Pies;i kot
1 ala
2 ma
3 kota
kot
4 ala
5 pies
6 pies
7 ala
i
8 co
9 tam
10 co
11 tam
12 Ala
13 Kot
14 Pies
15 i
16 kot
Wszystkich słów jest: 16
Tak jak widać, nie są zliczane wyrazy zaczynające się od nowego wiersza.
Z góry serdecznie dziękuję za pomoc i pozdrawiam, Łukasz