/** * AnalisiTesto * @author Adriano Luchetta * @version 6-Nov-2004 * * classe eseguibile. * Legge un testo da standard input e lo memorizza in un oggetto di classe MyStringVector * Esegue successivamente la seguente elaborazione * - separa il testo in parole * - stampa a standard output * + il testo originale * + il numero delle parole contenute nel testo * + la prima e l'ultima parola secondo l'ordine lessicografico * + le parole in ordine lessicografico crescente, una per riga */ import java.util.Scanner; public class AnalisiTesto { public static void main(String[] args) { //lettura da standard input Scanner in = new Scanner(System.in); //definizione oggetto di classe AnalizzatoreDiTesto MyStringVector lineText = new MyStringVector(); MyStringVector wordText = new MyStringVector(); //memorizzazione del testo a righe e a parole while (in.hasNextLine()) { String line = in.nextLine(); lineText.add(line); Scanner tok = new Scanner(line); while (tok.hasNext()) wordText.add(tok.next()); tok.close(); } //stampa del testo originale System.out.println("*** TESTO ORIGINALE ***"); System.out.println(lineText); System.out.println("*** FINE TESTO ORIGINALE ***"); //analisi del testo System.out.println("\n*** ANALISI DEL TESTO ***"); System.out.println("Testo di " + wordText.size() + " parole"); System.out.println(wordText.min() + ": prima parola in ordine lessicografico"); System.out.println(wordText.max() + ": ultima parola in ordine lessicografico"); /* l'algoritmo per ordinare le parole secondo l'ordine lessicografico. non e' efficiente! Studieremo algoritmi efficienti. Per ora elenchiamo le parole in ordine lessicografico seplicemente trovando ed rimuovendo la parola minima. */ System.out.println("*** PAROLE IN ORDINE LESSICOGRAFICO CRESCENTE ***"); while (!wordText.isEmpty()) { String min = wordText.min(); int index = wordText.indexOf(min); wordText.remove(index); System.out.println(min); } } }