Senza offesa....ma mamma mia chiedevo solo un aiuto (in riferimento alla risposta del moderatore al post http://forum.html.it/forum/showthrea...readid=1076434) ...purtroppo non tutti sono cosi esperti di programmazione java come sicuramente sarai te...devi considerare anche questo!!!Io non sono per niente esperto...ma siccome mi serviva assolutamente questa funzione in java per un lavoro che sto svolgendo (molto più ampio che una "semplice",anche se non per me,funzione...) ho provato a chiedere aiuto!!!
Comunque hai ragione,mi ero espresso male nella domanda,non volevo codice bello e pronto per non fare il lavoro....mi serviva solo per avere un idea su come scriverlo visto che è una parte minuscola di un lavoro molto più ampio che sto svolgendo....PERO' BASTAVA CHIEDERE UNA SPIEGAZIONE E NON CHIUDERE IL POST COME SE AVESSI CHIESTO EROINA GRATIS PER MIO FIGLIO DI 2 ANNI....comunque qui comandi tu e non posso dire niente!!!
tornando alla mia domanda passata : "Ciao a tutti,qualcuno saprebbe dirmi se e dove è possibilie trovare codice scritto in java per creare un applicazione che analizzi un file di testo (in input) e che riesca a trovare le parole più usate nel testo?(ad esempio le 3 parole più presenti che quindi saranno le parole chiave del testo)....cioè le parole che ricorrono più volte all'interno del testo!!!"
il codice l'ho fatto soltanto che ho un problema : sperando che qualcuno possa aiutarmi il codice è questo
import java.io.*;
import java.util.*;
class Counter implements Comparable {
private String word;
private int count;
public Counter(String word) {
this.word = word;
count = 1;
}
public void increment() { count++; }
public String toString() {
return "\n" + word + " [" + count + "]";
}
public boolean equals(Object obj) {
return obj instanceof Counter &&
((Counter)obj).word.equals(word);
}
public int hashCode() {
return word.hashCode();
}
public int compareTo(Object o) {
return word.compareTo(((Counter)o).word);
}
}
class CounterSet extends AbstractSet {
private Map set = new TreeMap();
public void addOrIncrement(String s) {
Counter c = new Counter(s);
if (set.containsKey(c))
((Counter)set.get(c)).increment();
else
set.put(c, c);
}
public Iterator iterator() {
return set.keySet().iterator();
}
public int size() {
return set.size();
}
public String toString() {
return set.keySet().toString();
}
}
class WordCount {
private FileReader file;
private StreamTokenizer st;
private CounterSet counts = new CounterSet();
WordCount(String filename)
throws FileNotFoundException {
try {
file = new FileReader(filename);
st = new StreamTokenizer(
new BufferedReader(file));
st.ordinaryChar('.');
st.ordinaryChar('-');
st.lowerCaseMode(true);
} catch(FileNotFoundException e) {
System.err.println(
"Could not open " + filename);
throw e;
}
}
void cleanup() {
try {
file.close();
} catch(IOException e) {
System.err.println(
"ERRORE IO file.close()");
}
}
void countWords() {
try {
while(st.nextToken() !=
StreamTokenizer.TT_EOF) {
String s = "a";
switch(st.ttype) {
case StreamTokenizer.TT_EOL:
s = new String("EOL");
break;
case StreamTokenizer.TT_NUMBER:
// s = Double.toString(st.nval);
break;
case StreamTokenizer.TT_WORD:
s = st.sval;
break;
default:
s = String.valueOf((char)st.ttype);
}
if(s.length() > 3)
counts.addOrIncrement(s);
}
} catch(IOException e) {
System.err.println(
"ERRORE IO st.nextToken()");
}
}
public Iterator iterator() {
return counts.iterator();
}
public String toString() {
return counts.toString();
}
}
public class KeyWordExtractor {
public static void main(String[] args)
throws FileNotFoundException {
for(int i = 0; i < args.length; i++){
WordCount wc = new WordCount(args[i]);
wc.countWords();
System.out.println("WORD = " + wc);
wc.cleanup();
}
}
}
Questo codice mi stampa in output tutte le parole (sopra i 3 caratteri) presenti nel file con il numero di volte che compaiono....ma io avrei bisogno che mi fornisca solo le 3 parole chiave più usate nel testo....per esempio in un file di testo (scrivo parole a caso giusto per rendere l'idea) "java funzione java file java funzione java ciao file funzione ciao java file java funzione" invece che fare come farebbe adesso,cioè scrivermi in output WORD = [ciao[2] , file[3] , funzione[4] , java[6]] avrei bisogno che mi salvasse in un array (o in qualsiasi altro contenitore) le parole "file" "funzione" "java" che saranno le parole chiave del testo visto che ricorrono più frequentemente............
sicuramente manca giusto una piccola parte di codice...ma è un pò che ci provo e non riesco proprio a farlo...
Se qualcuno potesse aiutarmi...
grazie mille.Ciao