codice:
import prog.io.*;
import prog.*;
import prog.utili.Sequenza;
import prog.progettinoI.*;
import java.util.StringTokenizer;
import java.lang.String;

class ProgettinoI
{
  public static void main (String args[])
  {
     ConsoleInputManager in = new ConsoleInputManager();
     ConsoleOutputManager out = new ConsoleOutputManager();

  
     //creo canale di lettura col file figure.txt
     String nomeFile=in.readLine("Inserisci il nome del file: ");
     FileInputManager  ingresso = new FileInputManager(nomeFile);

     //creo sequenza che conterrà gli oggetti di tipo Figura3D
     Sequenza<Figura3D> oggetti = new Sequenza<Figura3D>();

     //canale implementato, ora posso leggere da file e costruire gli oggetti di conseguenza
     String riga;
     int scelta=0;
     String oggettoLetto, tokenLetto;
     while((riga=ingresso.readLine()) != null)
     {
          oggettoLetto=riga;   //stringa oggettoLetto contiene prima riga del file Figura3D
          StringTokenizer stk = new StringTokenizer(oggettoLetto);  //uso token per leggere contenuto della riga
          tokenLetto=stk.nextToken();   //ora in tokenLetto ho la prima parola apparsa sulla riga di Figura3d prima che incontri il delimitatore
          
         if(tokenLetto=="Sfera")
            scelta=1;
         else if(tokenLetto=="Parallelepipedo")
            scelta=2;
         else if(tokenLetto=="Cubo")
             scelta=3;
         else if(tokenLetto=="Cilindro")
             scelta=4;
         
          if(scelta==1)   {    tokenLetto=stk.nextToken();
                                          double r = Double.parseDouble(tokenLetto);
                                           Sfera n = new Sfera(r);  //creo oggetto sfera con raggio uguale al numero letto col nextToken();
                                          oggetti.add(n);  //aggiungo l'oggetto Sfera alla sequenza di nome oggetti e di tipo  Figura3D
                                          }
  
           
           else if(scelta== 2){
           
                                                      double a,b,h;       //3 double che rapp. lato a lato b e altezza h
                                                      tokenLetto=stk.nextToken();
                                                      a=Double.parseDouble(tokenLetto);
                                                      tokenLetto=stk.nextToken();
                                                      b=Double.parseDouble(tokenLetto);
                                                      tokenLetto=stk.nextToken();
                                                      h=Double.parseDouble(tokenLetto);
                                                      Parallelepipedo p = new Parallelepipedo(a,b,h);
                                                      oggetti.add(p);  }
                                                    

           
           
            else if (scelta==3){
                                                      double l;
                                                       tokenLetto=stk.nextToken();
                                                       l=Double.parseDouble(tokenLetto);
                                                       Cubo c = new Cubo(l);
                                                       oggetti.add(c);
                                                    }

            
           else if(scelta==4){
           
                                                       double u,m;   //ru= raggio m = altezza
                                                       tokenLetto=stk.nextToken();
                                                       u=Double.parseDouble(tokenLetto);
                                                       tokenLetto=stk.nextToken();
                                                       m=Double.parseDouble(tokenLetto);
                                                       Cilindro i = new Cilindro (u,m);
                                                       oggetti.add(i);}

//ora controllo che la sequenza di tipo Figure3D abbia oggetti al suo interno

          if(oggetti.isEmpty())
           out.println("Seq.vuota");
          else out.println("Sequenza piena");

      }  //chiusura del while d'acquisizione degli oggetti nella sequenza denominata "oggetti"
il problema è questo: io devo fare in modo di riuscire a leggere da un file di testo i nomi di alcune figure geometriche seguiti dai rispettivi valori.
X leggere il nome uso StringTokenizer e poi confronto il suo contenuto(passandolo ad una variabile di tipo String) nel ciclo if.

in base alla figura letta vado a costruire un oggetto equivalente a tal figura e lo memorizzo
nella sequenza di oggetti denominata appunto "oggetti"

Xò poi alla fine del codice come vedrete effettuo un controllo con il metodo size()(che mi da un valore int indicante il numero di oggetti contenuti nella sequenza) e mi da come risultato

0

nel caso il controllo lo faccia dentro il while mi da

0
0
0
0
0
0
0
0
0

.... considerate che il file ha 9 righe di testo contenenti 9 figure, ma dovrebbe darmi 9, invece mi da quel risultato li! xdi + se esco dal while è come se mi perdesse il contenuto della variabile oggetti di tipo Sequenza...