Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Scrittura File e Compilazione dos?

    Ciao a tutti,sono alle prese con questo esercizio,una rubrica che memorizza i contatti su un filetxt quindi scrittura e lettura da file e poi lo da il problema è nell'esecuzione perche devo inserire dei programmi solo che non so come scriverli e quali sono qualcuno potrebbe aiutarmi?!



    codice:
    Rubrica1
    
    
    
    public class Rubrica1
    { 
      
        String cognome;
        String nome;
        int telefono;
        boolean flag;
    
      public Rubrica1()//costr snz paramentri
      {
        String cognome;
        String nome;
        int telefono;
        boolean flag=false;
      }
      public Rubrica(String a,String b,int c)
      {
        nome=a;
        cognome=b;
        telefono=c;
        flag=true;
        
      }
     
       public String getNome()
        {
          return nome;
       
        }
        public String getCognome()
         {
          return cognome;
          }
        public int  getTelefono()
        {
        return telefono;  
        }  
        public boolean getFlag()
        {
        return flag;
        }
        public static  boolean controllanome(String no)
      {
            return no.matches("[AZ] [a-zA-Z]*");
        
       
      }
        public static boolean controllacognome(String co)
     {
       return co.matches("[a-zA-Z]+(['-][a-zA-Z]+)+");
     }
    public static boolean controllatelefono(String te)
      {
      return te.matches("\\d {10}");
      
      
    }}
    
    codice:
    rubricatest
    
    
    
    import java.util.*;
    import java.io.*;
    
    public class RubricaTest
    {
    public static void main (String[] args)
    {
    Rubrica1 array[]= new Rubrica1 [100];
    Scanner input=new Scanner(System.in);
    int pos=0;
    boolean entra=false;
    
    for(int i=0;i<array.length;i++)
      
      array[i]=new Rubrica1();
        
    while(!entra)
    {
    System.out.printf("Digita 1 per creare un nuovo contatto,2per trovare un contatto,3per uscire dalla Rubrica");
    int scelta =input.nextInt();
    while( scelta>3 || scelta <1)
    {
    System.out.printf("Hai inserito un numero non valido");
      scelta=input.nextInt();
    }
    switch(scelta)
    {
    case 1:
      System.out.printf("Inserire il nome del contatto desiderato:\n");
      String no=input.nextLine();
      System.out.printf("Inserire il cognome del contatto desiderato:\n");
      String co=input.nextLine();
      System.out.printf("Inserire il numero di telefono del contatto desiderato:\n");
      String te=input.nextLine();
    //da cont
    
      System.out.printf("\nInserimento in corso....\n");
      if (!Rubrica1.conmtrollanome(no))
      System.out.println("Nome non corretto o troppo lungo");
      else if (!Rubrica1.controllacognome(co))
      System.out.println("Cognome non corretto o troppo lungo");
      else if (!Rubrica1.controllatelefono(te))
                      
    array[pos]=new Rubrica1(no, co, te);
    if(pos<=99)
      pos++;
    break;
    case 2:
      System.out.printf("Inserisci il nome del contatto da cercare");
      String nom=in.nextLine();    
      for (int i=0; i<array.length; i++)
      if (array[i].getflag && array[i].nome.equals(nom))
      System.out.printf("I dati del contatto sono"+ array[i].nome + array[i].cognome + array[i].telefono + "\n"  );
      else 
      System.out.printf("Il contatto non è presente nella rubrica");
                    break;
            case 3:
                    entra=true;
                    System.exit(1);
                    break;
           }
         }
         stampa();
       }  
       public static void stampa()
      {
        try{
        FileWriter file=new FileWriter ("elenco.txt");
        Printwriter out=new Printwriter (file);
        
        for(int i=0; i<array.length;i++)
        out.print(array[i].nome + array[i].cognome + array[i].telefono +  "\n");
          
        }
        catch(IOException e) 
        {
          System.out.println("Errore" + e);
        }
        finally
        {
          out.close();
        }
      }
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Scrittura File e Compilazione dos?

    Originariamente inviato da Agrigentine
    Ciao a tutti,sono alle prese con questo esercizio,una rubrica che memorizza i contatti su un filetxt quindi scrittura e lettura da file e poi lo da il problema è nell'esecuzione perche devo inserire dei programmi solo che non so come scriverli e quali sono qualcuno potrebbe aiutarmi?!
    Beh, intanto vedo svariati errori/mancanze nel tuo codice. Poi comunque non ho ben capito la tua frase "perche devo inserire dei programmi solo che non so come scriverli". Scrivere cosa?? Intendi dire come compilare/lanciare il tuo programma da linea di comando???

    Comunque un passo per volta. Vediamo gli errori e i problemi nel tuo codice:

    Nella classe Rubrica1:
    - Le variabili di "istanza" sarebbe meglio metterle 'private'.

    - Nel costruttore senza argomenti hai dichiarato 4 variabili locali uguali alle variabili di istanza .... per quale motivo non lo so ..... (e non servono a nulla).

    - Il secondo costruttore l'hai chiamato Rubrica mentre invece dovrebbe essere Rubrica1.

    - Generalmente, secondo le convenzioni standard, è bene mettere i parametri di costruttori e metodi setter relativi alle proprietà con lo stesso nome delle variabili di istanza. Proprio per non doversi "inventare" altri nomi come 'a', 'b' ecc... che dicono molto poco:

    codice:
    public Rubrica1(String nome, ....blabla....) {
        this.nome = nome;
        .....
    }
    - La regex per controllare il telefono non fa quello che vorresti. C'è uno spazio tra \\d e {10}. Devi metterli attaccati se vuoi "esattamente 10 digit". Pure in quella per il controllo del nome c'è uno spazio ... e probabilmente non è quello che volevi.


    Nella classe RubricaTest:
    - Fai un test: else if (!Rubrica1.controllatelefono(te)) e il "corpo" è l'assegnamento array[pos]=new Rubrica1(no, co, te);
    Ma sicuramente non è quello che intendevi. Se non è corretto il telefono devi mettere un'altra println() come quelli sopra.

    - stampa() non è corretta.
    --- Usi 'array' ma array non è visibile ... è una variabile locale nel main()!!
    --- Nel finally usi 'out' ... solo che out lì non è visibile perché è locale nel blocco del try!!
    --- Non usare print() per poi mandare in output espressamente \n. Usa println().
    --- Poi nome/cognome/telefono li stampi tutti attaccati e comunque accedi direttamente ai campi mentre invece sarebbe preferibile farlo attraverso i "getter".


    Come vedi gli errori/problemi sono parecchi. Quindi controlla e verifica bene tutto. Il tuo codice, così come è, non può compilare correttamente.


    Alcuni suggerimenti generali. Abituati fin da ora a:
    - Scrivere il codice ben spaziato e sopratutto indentato.
    - Usare sempre { .... } per if/for anche se contenenti come "corpo" una sola istruzione.
    - Usare nomi per variabili e metodi che seguono le convenzioni "standard". Ad esempio controllaTelefono() ... non controllatelefono().
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Grazie mille...cerco di sistemarlo,scusa per gli errori/orrori ma ancora sono all'inizio è non c'è nessuno che mi dia degli insegnamenti apparte il libro e voi del forum..Per quanto riguarda la domanda che era poco chiara intendevo dire che non so se devo inserire delle istruzioni particolari per la scrittura e lettura su file,ma forse adesso ho capito.. quindi sistemo il codice e in tal caso lo posto nuovamente ok?...Grazie andbin per la tua disponibilità ..

  4. #4
    Ho provato a sistemarlo ma ancora mi da errori...dove sbaglio???,un altra cosa ma per eseguire questo programma mi basterà compilare il main quando non mi darà piu errori?...scusate questa domanda che puo apparire banale...
    codice:
     Rubrica1
    
    
    
    public class Rubrica1
    { 
      
        String cognome;
        String nome;
        String telefono;
        boolean flag=false;
    
        Rubrica1()//costr snz paramentri
        {
         
        }
           Rubrica1(String nome,String cognome,String telefono)
          {
            this.nome=nome;
            this.cognome=cognome;
            this.telefono=telefono;
            flag=true;
        
          }
     
            public String getNome()
            {
              return nome;
       
            }
              public String getCognome()
              {
                return cognome;
              }
                public String  getTelefono()
                {
                  return telefono;  
                }  
                  public boolean getFlag()
                  {
                    return flag;
                  }
                    public static  boolean controllanome(String no)
                    {
                      return no.matches("[AZ] [a-zA-Z]*");
        
       
                    }
                      public static boolean controllacognome(String co)
                      {
                        return co.matches("[a-zA-Z]+(['-][a-zA-Z]+)+");
                      }
                        public static boolean controllatelefono(String te)
                        {
                          return te.matches("\\d{10}");
                        }
          
      
    }import java.util.*;
    import java.io.*;
    
    public class RubricaTestc
    {
        static Rubrica1 array[]= new Rubrica1 [100];
        static Scanner input=new Scanner(System.in);
        static int pos=0;
        static boolean entra=false;
        static String buffer;
        static String nome;
        static String cognome;
        static String telefono;
    
        public static void main (String args[])
        {
    
          for(int i=0;i<array.length;i++)
          {
            array[i]=new Rubrica1();
          } 
            elenconum();
            stampa();
            inizio();
           
            for(int r=0;r<array.length;r++) // visualizza il contenuto dell'array
              { 
                System.out.println(array[r].getCognome()+" "+array[r].getNome()+" "+array[r].getTelefono());
              }
        
         
        }
         public static void elenconum() //metodo lettura file
          { 
              try
           {
             
             FileReader file = new FileReader("elenco.txt");
             BufferedReader in = new BufferedReader(file);
              
             buffer=in.readLine();
             for(int i=0; i<array.length;i++)
              System.out.println(array[i].nome + array[i].cognome + array[i].telefono +  "\n");
          
            
               }
             
            
           catch(IOException e)
             {
               e.printStackTrace();}// indica la riga dove si e generata l'eccezione
           
           System.out.println("caricamento numeri eseguito con successo\n");
          }
                      
            
     
      
      
       
                public  static void inizio()
                {
                  while (!entra)
                  {
                    System.out.printf("Digita 1 per creare un nuovo contatto,2per trovare un contatto,3per uscire dalla Rubrica");
                    int scelta =input.nextInt();
                      while( scelta>3 || scelta <1)
                      {
                        System.out.printf("Hai inserito un numero non valido");
                          scelta=input.nextInt();
                      
                        switch(scelta)
                        {
                          case 1:
                            System.out.printf("Inserire il nome del contatto desiderato:\n");
                              String no=input.nextLine();
                            System.out.printf("Inserire il cognome del contatto desiderato:\n");
                              String co=input.nextLine();
                            System.out.printf("Inserire il numero di telefono del contatto desiderato:\n");
                              String te=input.nextLine();
    //da cont
    
                              System.out.printf("\nInserimento in corso....\n");
                                if (!Rubrica1.controllanome(no))
                                  System.out.println("Nome non corretto o troppo lungo");
                                    else if (!Rubrica1.controllacognome(co))
                                      System.out.println("Cognome non corretto o troppo lungo");
                                        else if (!Rubrica1.controllatelefono(te))
                                          System.out.println("Cognome non corretto o troppo lungo");
                  
                                            array[pos]=new Rubrica1(no,co,te);
                                              if(pos<=99)
                                                
                                                pos++;
                                                  break;
                            case 2:
                            System.out.printf("Inserisci il nome del contatto da cercare");
                              String nom=input.nextLine();    
                                for (int i=0; i<array.length; i++)
                                  if (array[i].getFlag && array[i].nome.equals(nom))//mi da errore ma xke voglio che mi confronti il nome salvato cn il nome inserito se flag è false
                                    System.out.printf("I dati del contatto sono"+ array[i].nome + array[i].cognome + array[i].telefono + "\n"  );
                                      else 
                                        System.out.printf("Il contatto non è presente nella rubrica");
                                          break;
                            case 3:
                              entra=true;
                                System.exit(1);
                                  break;
         
                            }
                          }
                        }  
                      }
                      
        public static void stampa()
      { 
       
        try
        {
          FileWriter fileout =new FileWriter ("elenco.txt");
          Printwriter out=new Printwriter (fileout);//errore cannot find symbol
            System.out.println("Inserisci il nome sul file");
            String f=input.nextLine();//out print(f);no?//non mi da errore..
            
        
            for(int i=0; i<array.length;i++)
              out.println(array[i].nome + array[i].cognome + array[i].telefono +  "\n");
          
        }
        catch(IOException e) 
        {
          System.out.println("Errore" + e);
        }
        finally
        {
          out.close();//variabile out..cannot find symbol
        }
      }     
      }

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    No, è comunque ancora errato in diversi punti. Ma poi scusa, ti è così difficile scrivere il codice ben indentato??? Le righe vanno un po' di qua ... un po' di la .... Con quale editor stai scrivendo il codice??

    E comunque, e spero tu abbia fatto così, devi avere 2 file sorgente, uno Rubrica1.java e l'altro RubricaTest.java
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Si l'avevo capito questo ,infatti ti avevo mandato i commenti dove mi dava errore...per quanto riguarda l'editor uso scite..e forse ho capito cosa intendi per "indentare" e proverò a farlo successivamente...comunque si ho chiamato il main RubricaTest.java e la parte senza Rubrica.java...

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Agrigentine
    comunque si ho chiamato il main RubricaTest.java e la parte senza Rubrica.java...
    Attento! Hai dichiarato la classe Rubrica1 "public" quindi il file deve chiamarsi Rubrica1.java e non Rubrica.java!
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    sisi ho sbagliato a scrivere ma ho fatto proprio così nome del file =nome della classe..i miei problemi sono altri!!ovvero la lettura e la scruttura da file che non credo sia corretta!

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.