Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    20

    [Java]Aiuto urgentissimo!!!

    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...

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    20
    in parte ho risolto dato che sbagliavo ad usare == negli if, devo usare equals

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    20
    tutto risolto,potete chiudere

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Sia qui che qui hai fatto uso di titoli improponibili, per cui sei stato pure ripreso, e nella discussione corrente hai proseguito questa fastidiosa tradizione, aggiungendo pure una bella esortazione (urgentissimo!!!).

    La prossima volta è possibile che, assieme alla discussione, si provveda anche alla chiusura dell'account, visto che insisti nel mancare di rispetto alle norme del Regolamento a cui, generalmente, si devono attenere tutti gli utenti, quindi tu compreso.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.