Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: problema lettura file

  1. #1

    problema lettura file

    salve a tutti , ho un piccolo problema con un programma...
    il problema in questione è che il programma viene compilato correttamente , ma non funziona.
    in pratica non riesce a leggere il file che gli passo.

    qualkuno mi puo aiutare???

    grazie anticipatamente
    saluti hdcreator.

    questo è il codice:

    import java.util.*;
    import java.io.*;

    public class RubricaT
    {
    public static void main(String args[])
    {

    int count=0;

    String nome, numero;
    rubrica array[]=new rubrica[50]; //creo un array di oggetti della classe rubrica

    try
    {

    FileReader file=new FileReader("numeri.txt"); // gli passo il file da leggere
    BufferedReader in=new BufferedReader(file);
    while(in.ready())
    {
    count++;

    }

    for(int e=0;e<count;e++)
    {
    String buffer =in.readLine();
    StringTokenizer Tokens= new StringTokenizer(buffer);
    nome=Tokens.nextToken();

    numero=Tokens.nextToken();
    array[e].setNome(nome); //inserisco nome nell'array
    array[e].setNumero(numero); //inserisco numero nell'array
    System.out.println(array[e].getNome()+""+array[e].getNumero());
    }

    }
    catch (IOException e)
    {}






    }



    }

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

    Re: problema lettura file

    Originariamente inviato da hdcreator
    il problema in questione è che il programma viene compilato correttamente , ma non funziona.
    in pratica non riesce a leggere il file che gli passo.
    Innanzitutto lascia perdere il ciclo while con ready(). Fai semplicemente:

    codice:
    String line;
    
    while ((line = in.readLine()) != null) {
      ....
    }
    Poi, cosa importantissima devi istanziare gli oggetti rubrica. Quando hai fatto:

    rubrica array[]=new rubrica[50];

    hai solamente istanziato un array di 50 reference ad oggetti di tipo rubrica ma questi reference sono inizialmente tutti a null, quindi non puoi fare array[e].blabla.

    E se quella classe rubrica ha un apposito costruttore (si spera ....) allora puoi fare:

    array[i] = new rubrica (nome, numero);
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    si la classe rubrica e dotata di un costruttore..

    public rubrica(String a ,String b)
    {
    Nome=a;
    Numero=b;
    }



    cmq grazie tante per la risposta...
    adesso provo
    saluti , hdcreator

  4. #4
    niente da fare... il programma non legge i file.
    i problemi comnciano subito dopo la creazione degli oggetti di FileReader e BufferedReader.

    in pratica il programma non entra nel ciclo for...
    questo spiega perche il comando System.out.println(....); non viene eseguito.


    qualkuno sa aiutarmi????
    questo è il testo dell'esercizio:
    "

    il candidato deve gestire l'inserimento dei numeri in una rubrica telefonica.
    All'interno di un file (numeri .txt)vi sono presenti dei numeri telefonici con il
    rispettivo nome.

    esempio
    Nome 355678xxxx

    il programma deve svolgere i seguenti punti:

    -inserimento di un altro contatto(nome e numero)

    N.B.
    non possono esistere 2 numeri uguali all'interno della rubrica, in tal caso portare a video un adeguato messaggio d'errore

    infine se la rubrica è piena (max 50 num.) deve essere impossibile memorizzare il numero e deve essere portato a video un adeguato messaggio d'errore.





    "

    grazie anticipatamente
    saluti hdcreator

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da hdcreator
    niente da fare... il programma non legge i file.
    i problemi comnciano subito dopo la creazione degli oggetti di FileReader e BufferedReader.

    in pratica il programma non entra nel ciclo for...
    questo spiega perche il comando System.out.println(....); non viene eseguito.


    qualkuno sa aiutarmi????
    Il testo ok, va bene. Ma se posti il codice completo è meglio.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,327
    Originariamente inviato da andbin
    Il testo ok, va bene. Ma se posti il codice completo è meglio.
    Ovviamente postalo all'interno degli appositi tag [code] e [/code], come indicato nel Regolamento e non a casaccio come hai fatto prima.

    In questo modo il codice risulta leggibile e mantiene l'indentazione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Originariamente inviato da andbin
    Il testo ok, va bene. Ma se posti il codice completo è meglio.
    E magari aggiungere anche qualcosa nel catch...
    Al mio segnale... scatenate l'inferno!

  8. #8
    Scusate per il ritardo della mia risposta...

    cmq vi posto qui di seguito il codice della classe non eseguibile "rubrica.java"

    codice:
    public class rubrica
    {
        static String Nome,Numero;
       
      public rubrica(String a, String b)
      {
        Nome=a;
        Numero=b;
        
        }
    
      public void setNome(String a)
       { Nome=a;}
      public void  setNumero(String b)
       { Numero =b;}
       public String getNome()
       {return Nome;}
       public String getNumero()
       {return Numero;}
       
    
    }
    questo invece è il codice della classe eseguibile "RubricaT.java"


    codice:
    import java.util.*;
    import java.io.*;
    
    public class RubricaT
    {
      
      
      static String nome, numero;
      static rubrica array[]=new rubrica[50];
      
      public static void main(String args[])   
      {
        
        imposta();
    
        try 
        {
          
          FileReader file=new FileReader("numeri.txt");
          BufferedReader in=new BufferedReader(file);
          int a=0;
          while(in.ready())
          {
            String riga =in.readLine();
            StringTokenizer Tokens= new StringTokenizer(riga);
            array[a]=new rubrica(Tokens.nextToken(),Tokens.nextToken());
            a++;
          }
          
          confronta();
          
        }
          catch (IOException e)
          {System.out.println("Errore IOException");}
            
            
           
            
            
          
          }
          
          public static void imposta()    // imposto l'array 
          {
            nome="Name";
            numero="Number";
            for(int r=0;r<array.length;r++)
                    {
                      
                      array[r]=new rubrica(nome, numero);
                      
                      }
            
            }
          
          public static void confronta()     // confronto i numeri , se sono diversi li salvo
          { 
            
            Scanner input=new Scanner(System.in);
            System.out.println("inserisci nome");
            nome=input.nextLine();
            System.out.println("inserisci numero");
            numero=input.nextLine();
            for(int q=0;q<array.length;q++)
            {
              if(numero.equals(array[q].getNumero()))
              {
                System.out.println("Il numero e gia presente in rubrica");
                break;
                }
                else if(!numero.equals(array[q].getNumero()))
                {
                  System.out.println("numero registrato correttamente");
                  array[q]=new rubrica(nome, numero);
                  break;
                  
                  
                  }
              
              
              
              
              
              
              }
            
            
            
            }
            
                  
          
        }
    questo invece e l'esempio dell'file "numeri.txt"

    persona1 343434343
    persona2 454545454
    persona3 123123123


    Se provate a compilare questi file(rubrica.java & RubricaT.java), non ci sarà alcun problema.
    Infatti i file vengono compilati , ma non vengono eseguiti correttamente....
    Il programma entra direttamente nel catch e dirà "Errore IOException ".

    nell'attesa di una vostra risposta , vi porgo i miei saluti.
    Hdcreator.

  9. #9
    Il programma entra direttamente nel catch e dirà "Errore IOException ".
    Ecco... Invece di far stampare "Errore IOException", fai un bel e.printStackTrace() così vedi sia che errore c'è sia il punto in cui viene generato.

    Al mio segnale... scatenate l'inferno!

  10. #10
    grazie mille del consiglio...

    ma non capisco cosa significa cioe ecco qui di seguito quello che esce fuori.

    java.io.FileNotFoundException: numeri.txt (Impossibile trovare il file specificato)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileReader.<init>(Unknown Source)
    at RubricaT.main(RubricaT.java:21)


    Se ho ben capito, il programma non riesce a trovare il file "numeri.txt", che tralaltro si trova nella stessa cartella dei file java.
    l'errore della riga 21 riguarda la dichiarazione dell'oggetto FileReader

    infatti l'errore indica questo pezzo di codice:

    FileReader file=new FileReader("numeri.txt");

    sapete aiutarmi????
    attendo una vostra risposta
    saluti , hdcreator

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.