Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    255

    memorizzare valori in una matrice bidimensionale

    salve a tutti sto studiando java è davanti ad alcuni esercizi preposti dal prof ho riscontrato alcuni dubbi...l'esercizio chiede di leggere un file txt e di memorizzare i valori del file in una matrice.leggere un file è alquanto semplice,ma non riesco a memorizzare i valori.chi mi da un aiuto
    grazie anticipatamente

  2. #2
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Non ci posso credere!!!!

    Ma sai leggere i file e non sai cosa sia una matrice bidimensionale?

    Ma dai!! Ti sei perso qualche lezione...

    Ti do qualche consiglio per il ripasso: http://java.sun.com/j2se/1.4.2/docs/...il/Arrays.html

    Però se non sai in anticipo la dimensione della matrice potrebbe farti comodo anche questo: http://java.sun.com/j2se/1.4.2/docs/...ArrayList.html

    Oppure avevi dubbi più specifici? Ciao!
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    255
    ciao scusa,forse mi sono spiegato male.so cosa sia un array a 2 dimensioni,so generare un array,ma non so come copiare i valori presenti nel file e copiarli nell'array,ed inoltre non conosco a priori come tu hai scritto la grandezza dell'array.
    ciao grazie

  4. #4
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Allora sarebbe interessante sapere qual'è il contenuto del file
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    255
    sono stringhe
    a1 b1 c1...
    a2 b2 c2...
    ...

  6. #6
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Ok. presumo tu sia in grado di invocare il metodo readLine()

    partiamo dall'inizio:
    Crei un vettore bidimensionale di stringhe
    Ti crei il BufferedReader
    Con readLine leggi tutte le righe del file
    Per ogni riga usi il metodo split per generare un vettore di stringhe {a1, b1, c1,...}
    vedi http://java.sun.com/j2se/1.4.2/docs/...a.lang.String)
    inserisci il vettore nell'array bidimensionale

    Ora ti serve solo stampare in qualche modo il contenuto del vettore per essere sicuro di aver fatto tutto giusto.

    In bocca al lupo!
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    255
    grazie dell'aiuto ora mi metto all'opera ti farò sapere.ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    255
    salve ragazzi potete controllare questo codice...mi da un piccolo problema,non mi trova il file.txt, nonostante esista.volevo chiedervi se all'interno del Reader devo inserire tutto l'indirizzo(es: c:\\esercizi\prova.txt).
    inoltre volevo chiedervi secondo me l'inserimento dei valori del file nell'array è sbagliato
    codice:
    import java.io.*;
    import java.util.Arrays;
    import java.util.StringTokenizer;
    
    public class leggifile 
    {
        public static void main (String args[]) 
        {
        String buffer = null;    
            try 
            {
            FileReader fr = new FileReader ("prova.txt");
            BufferedReader in = new BufferedReader (fr);
            int i=0;
                while(in.ready())
                {
                buffer=in.readLine();
                }
            StringTokenizer stoke = new StringTokenizer(buffer);
            while (stoke.hasMoreElements())
            System.out.println(stoke.nextToken());
            System.out.println(Arrays.asList(buffer.split(" ")));    
            fr.close();
            } 
            catch (Exception e) 
            { 
            System.out.println("errore" + e);
            }
        }
    }

  9. #9
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    volevo chiedervi se all'interno del Reader devo inserire tutto l'indirizzo(es: c:\\esercizi\prova.txt).
    meglio altrimenti il file deve trovarsi nella directory da cui lanci java.
    Inoltre "c:\\esercizi\prova.txt" da errore, perchè \ è un carattere di escape.
    Invece "c:\\\\esercizi\\prova.txt" invece dovrebbe funzionare.



    public class leggifile
    Cominciamo male... il nome della classe va con la lettera iniziale maiuscola!



    while(in.ready())
    {
    buffer=in.readLine();
    }
    E questo cosa dovrebbe fare? Finché il file è pronto lo legge una riga alla volta, mette ogni riga nella variabile buffer e quindi quando esce dal while, in buffer avresti solo l'ultima riga letta..

    Di solito si fa qualcosa del genere:

    codice:
    String riga;
    while ( (riga=in.readLine())!=null )
    {
    	// E qui fai quel che devi fare sulla riga
    }

    so cosa sia un array a 2 dimensioni
    Sicuro? Questo è un possibile array bidimensionale di Stringhe: String [][] matrice;
    Ti invito a leggere le api di Array. Avevi ottenuto una lista di stringhe..

    Per semplificare le cose procederei con il memorizzare tutte le stringhe del file in un array monodimensionale di stringhe (String[] vettore)
    All'interno del ciclo di while, inserisci nel vettore la stringa "riga" fornita dal BufferedReader.
    Dai un'occhiata qui, per sicurezza.. http://java.sun.com/docs/books/tutor...ts/arrays.html

    Quando avrai finito di leggere il file avrai un vettore di stringhe, ogni cella del vettore conterrà una riga del file. Con un contatore puoi memorizzare il numero di righe del file, e questo ti aiuta poi a creare la matrice bidimensionale della dimensione giusta.
    Siccome non sai quante righe ha il file, puoi dare una dimensione "adeguata" al vettore iniziale, che ne so, 1000.
    Se invece vuoi fare subito le cose in modo più dinamico, invece del vettore usa una ArrayList<String>, che per certi versi è anche più semplice. Ovviamente controlla le api.

    Per finire:
    codice:
    BufferedReader br = null;
    try
    {
    	// apri lo stream
    	br = new BufferedReade(new FileReader(nomeFile));  
    	// leggi il file
    	// popoli la matrice
    }
    catch (Exception e)
    {
    	e.printStackTrace();	// Molto meglio di Systsem.out.println (e)
    	// Per il momento è meglio così, più avanti stamperai un tuo messaggio di errore
    }
    finally
    {
    	// se br != null, chiudi lo stream.
    	// Trattandosi di uno stream in lettura, anche senza questa operazione 
    	// non accade nulla di troppo fastidioso,
    	// ma se invece il file lo stessi scrivendo, diventa necessario.
    }
    Nota: non ti sto indicando l'algoritmo migliore e molti potranno darti indicazioni migliori. Tuttavia ritengo sia meglio se a forme di codice più evolute ci arrivi da solo, col tempo.
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    anche a me servirebbe + o - lo stesso esercizio,ma in + devo creare un interfaccia
    cmq ti posto il codice per leggere il file...poi aspetto anch'io un aiuto...
    codice:
    import java.io.*;
    public class Main {
       
        public static void main(String[] args) {
            String array = null;
            try {
                           
              
              BufferedReader br=new BufferedReader(new FileReader("C:\\miofile2.txt")); //legge da fille
             
                 array=br.readLine();   //lo trasporta nella stringa
    
                 System.out.println(" cio' ke c'e' scritto nel array: "+array);              
          
            } catch (IOException ex) {
                
            }
             
       
        }
    }
    grazie valentina

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.