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

Discussione: Problema matrice nxn

  1. #1

    Problema matrice nxn

    Allora: Ho un file e Ora io sono riuscito a leggerlo
    utilizzando questo metodo:

    public static int contaParole(String inputFile) throws IOException{
    int conto=0;
    StringTokenizer riga=null;
    BufferedReader in=new BufferedReader(new FileReader(inputFile));
    String s=in.readLine();
    while(s!=null){
    riga=new StringTokenizer(s," \t\n\r\f,.;:");
    conto=conto+riga.countTokens();
    s=in.readLine();

    }
    return conto;
    }

    In poche parole questo metodo conta le parole che ci sono nel file(dopo ovviamente averle lette) utilizzando la StringTokenizer e il BufferedReader (che ho importato all'inizio del programma);
    Ora mi servirebbe (e non sono in grado di scriverlo) un altro metodo statico che memorizzi i valori del file dato in una matrice nxn (array doppio);
    Come si fa???

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ma sicuro che si tratti di javascript? Non sembrerebbe ne nella sintassi (public) che gli oggetti (BufferedReader) forse è java (jsp)? Se cossi fosse chiedi lo spostamento "link segnala al moderatore"
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Si scusatemi è Java, mi sono sbagliato a pubblicarlo qui... Pensavo che me lo avrebbero subito spostato...
    Chi può farlo?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    domanda numero 1: perché statico?
    domanda numero 2: cosa rappresenta ogni riga della matrice e cosa ogni colonna?
    domanda numero 3: perché array nxn^

  5. #5

    Re: Problema matrice nxn

    Originariamente inviato da iAlessandro93
    Ora mi servirebbe (e non sono in grado di scriverlo) un altro metodo statico che memorizzi i valori del file dato in una matrice nxn (array doppio);
    Come si fa???
    n = valore restituito da un ipotetico metodo contaRighe(), se ce l'hai....
    Mentre la matrice quadrata potresti costruirla definendo un array di array:
    codice:
    String m[][] = new String[n][n];
    Il problema però sta nel fatto che una riga può contenere più termini rispetto ad n.
    Altrimenti, se sei certo del fatto che una riga non può contenere più termini rispetto al numero totale di righe, può andare bene.

  6. #6
    Allora, vi spiego meglio il mio problema:

    Devo leggere un file in ingresso del tipo:

    Coda Testa Costo Popolazione Pixel Servito
    22 8 224 869 5264 0
    22 16 214 869 5264 0
    22 2 214 869 5264 0
    22 1 244 869 5264 0
    22 14 204 869 5264 0
    22 11 204 869 5264 0
    22 15 154 869 5264 0

    (e prosegue per molto,è un file di 19 mega!!)



    e memorizzare in una array doppio o in liste o in qualunque oggetto (anche Map) tutti i dati;Dopodiché devo confrontare gli elementi aventi stessa testa e stessa coda e mantenere solo quelli con costo minimo (Ad es se un elemento ha testa 7,coda 7 e costo 15 ed un altro elemento ha testa 9,coda 9 e costo 17 devo mantenere il primo ed eliminare il secondo) e rimemorizzarli in un nuovo oggetto.Idee??

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    che ne diresti di sfruttare i principi della programmazione ad oggetti??
    Ad esempio, ogni riga può diventare un'istanza di classe, in cui ogni colonna è una proprietà.
    Memorizzi in modo temporaneo in una lista, mappa o set e puoi sfruttare equals, comparatori per fare confronti
    Potresti evitare di tenere in memoria tutto il file (viste le dimensioni), ma parsarlo solo per avere max, min o media ( o altri conti).
    Ovviamente considera ogni quanto fare queste operazioni e ovviamente considera che devi metterle all'interno di un thread.

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Supporto al 100% l'idea di valia: se per qualche ragione non ti servono tutti i dati in una volta sola, evita di trattare il file in una botta sola e nella sua interezza: man mano che parsi, salvi solo quanto ti serve in un'opportuna struttura dati.

    Poi, altro suggerimento, se devi procedere con ricerche, ordinamenti o altro, non ti converrebbe caricare il file in un database?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    infatti il database consentirebbe di far fare ad altri lo sporco lavoro di ordinare e mantenere i dati e soprattutto ogni estrazione si riduce in una query che se ben scritta fa risparmiare tempo.
    Considera questa soluzione anche nel caso in cui per forza di cose devi fare numerosi accessi/parse al file in quanto l'overhead iniziale di passarli nel database consente poi di avere vantaggi in esecuzione

  10. #10
    Originariamente inviato da Andrea1979
    Poi, altro suggerimento, se devi procedere con ricerche, ordinamenti o altro, non ti converrebbe caricare il file in un database?
    Ma si tratta di una sola tabella. Se lo schema non è sottoposto a cambiamenti/estensioni future allora come idea va bene in quanto a livello di applicazione si evita di dover per forza rendere il record modificabile (però java offre tante soluzioni per poterlo rendere tale senza grandi sforzi).

    @ iAlessandro93:
    piuttosto che usare un file nel quale vai a salvare semplici righe di testo ti conviene creare una classe A che rappresenti la struttura di quel record ed una classe B che
    - incapsula una lista (o altra struttura lineare) di istanze della classe A ordinata per costo,
    - un campo che rappresenta la soglia di costo accettabile entro la quale determinare il range di istanze della classe A da processare (che hanno testa = coda).
    - consente di aggiungere/rimuovere (conservando l'ordinamento) istanze di classe A, premesso che questo aspetto debba essere soddisfatto.

    Classe A e classe B devono essere serializzabili, e l'unica istanza di classe B deve essere salvata in un qualche file sfruttando i flussi di oggetti.

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.