Newsgroup: it.comp.java
Titolo: Problema con programma che utilizza StringTokenizer

Ho provato a svolgere un esercizio che chiedeva di creare un programma che
ricevendo come input una frase, desse la frase in uscita con le parole in
ordine inverso, ho provato a svolgerlo in questa maniera, il compilatore me
lo cmpila senza errori, solo che appena provo a farlo partire e do invio il
programma mi si pianta e non da nessun segno di vita, nè da risultato, nè da
errori sparsi ma sta là a vegetare qualcuno può darmi una mano a risolvere
il problema?
Ecco di seguito il programma che ho creato.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class Token extends JFrame {
    private JLabel immissione;
    private JTextField campo;
    private JTextArea output;
    private String a[];
    public Token()
    {
     super ("Programma esercizio 10.21");
     Container c = getContentPane();
     c.setLayout (new FlowLayout());
      ActionEventHandler azione = new ActionEventHandler();
     immissione = new JLabel ("Inserisci una frase, possibilmente di senso
compiuto");
     c.add (immissione);
     campo = new JTextField (20);
     campo.addActionListener (azione);
     c.add (campo);
     output = new JTextArea (10, 20);
     output.setEditable (false);
     c.add (new JScrollPane (output));
     setSize (400, 250);
     show();
    }
    public static void main (String args [])
    {
        Token app = new Token();
        app.addWindowListener (
        new WindowAdapter()
        {
            public void windowClosing (WindowEvent e)
            {
                System.exit (0);
            }
        }
        );
    }
    public class ActionEventHandler implements ActionListener
    {
        public void actionPerformed (ActionEvent e){
            String stringToTokenize = e.getActionCommand();
            StringTokenizer tokens = new StringTokenizer (stringToTokenize);
            a = new String [tokens.countTokens()];
            while ( tokens.hasMoreTokens()){
                for ( int i = 0; i < tokens.countTokens() - 1; i++)
                    a[i] += tokens.nextToken();
            }
              output.setText ("Frase al contrario:" + tokens.countTokens() +
"\n");
            for ( int  z = tokens.countTokens() - 1; z > 0; z++)
                output.append (a[z] + "\n");
        }
    }
}

 ha scritto nel messaggio
news:ErYR9.60864$Q%4.19...@news1.tin.it...


 ha scritto nel messaggio
news:7U8S9.85111$TC5.2...@twister1.libero.it...


 ha scritto nel messaggio
news:bhbS9.63464$Q%4.20...@news1.tin.it...


}
Fai una simulazione *a mano* (intendo proprio con carta e penna) di ciò che 
succede qui dentro.
Quando hai capito cosa c'è che non va, riposta.
-- 
Ciao
	Fabrizio C.

 ha scritto nel messaggio
news:MPG.188384f78...@powernews.libero.it...


cosa può essere?
Spero d'aver capito cosa volevi fare:
   public class ActionEventHandler implements ActionListener
    {
        public void actionPerformed (ActionEvent e){
            String stringToTokenize = 
			e.getActionCommand();
            StringTokenizer tokens = 
			new StringTokenizer (stringToTokenize);
 
            int tokensCount = tokens.countTokens();
            if (tokensCount > 0){
                String[] frase = new String[tokensCount];
                while ( tokens.hasMoreTokens()){
                    for ( int i = tokensCount  -1; i >= 0; --i){
                        frase[i]= (String)tokens.nextToken();
                    }
                }
 
                output.setText ("Frase al contrario:\n");
                for (int  z = 0;  z < frase.length; ++z){
                    output.append (frase[z] + "\n");
                }
            }
        }
    }
-- 
hth, hal

    }
Accodo anche la mia versione, così c'è un po' di varietà ;-)
    private class ActionEventHandler implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            String source = campo.getText();
            StringTokenizer st = new StringTokenizer(source);
            StringBuffer sb = new StringBuffer(source.length());
            Stack stack = new Stack();
            while (st.hasMoreTokens()) {
                sb.insert(0, '\n');
                sb.insert(0, st.nextToken());
            }
            output.setText(sb.toString());
        }
    }
Un altro modo (più elegante?) sarebbe usando la classica struttura dati 
nota come Stack (java.util.Stack).
HTH
-- 
Ciao
	Fabrizio C.

nota come Stack (java.util.Stack).
Sicuramente piu' elegante, ma con qualche riga di codice in piu'.
-- 
ciao, hal

 ha scritto nel messaggio
news:se4j1v4ak4r1on6re...@4ax.com...


 risolvere il problema?
http://space.tin.it/computer/csadun/javafaq.html#d1-15
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun

 ha scritto nel messaggio
news:Xns92FC677EAA21Dcr...@130.133.1.4...
