Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [Java] Ordinare parole in un file di testo

    Salve a tutti,

    devo creare un programma java che riceve in input un file di testo e deve produrre in output un altro file con le stesse parole ordinate alfabeticamente.
    che algoritmo di ordinamento mi suggerite?

    e inoltre il mio programma deve verificare la presenza di una parola chiave e sostituirla con un altra..esiste qualche classe che potrebbe essermi utile per qst?

    grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    1) Un qualsiasi algoritmo di ordinamento a tua scelta, dal BubbleSort al QuickSort (controlla anche la classe Arrays del package java.util)

    2) No, non esiste nulla. Dopotutto è un'operazione semplicissima da attuare via codice, direttamente in fase di lettura del file di testo.


    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

  3. #3
    ma quindi per l' ordinamento devo usare un array?

    e per la sostituzione potresti dirmi a grandi linee come fare?

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    41
    Originariamente inviato da giannimarz
    ma quindi per l' ordinamento devo usare un array?

    e per la sostituzione potresti dirmi a grandi linee come fare?
    (attenzione sono neofita :-) )

    sì, un array di String o al limite un vector ma non ne vedo il motivo... non so se ci son oaltri modi ma così è ok.

    per la sostituzione ugualmente puoi usare un qualsiasi algoritmo di ricerca e quando trovi la parola gli dici di sostituirla. Se non ha milioni di parole, non dovresti avere problemi a farlo... la più semplice è che fai scorrere l'array in modo sequenziale (lo stesso ciclo che userai per riempirlo, credo) e ci inserisci dentro un if (parolacorrente == parolachiave).

  5. #5
    se non erro,per la sostituzione, usando un array dovrei copiare tutte le parole nell' array poi effettuare la sostituzione e ricopiare il tutto sul file.

    io invece vorrei intervenire direttamente sul file sostituendo la parola senza usare altre strutture dati.

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Io userei un Vector (a meno che tu non sappia fin da subito quante parole contiene il file).

    La sostituzione la fai in lettura: leggi una riga dal file (suppongo che ciascuna parola stia in una riga a se), se la parola non è fra quelle che ti interessa sostituire la salvi nel Vector (metodo add()). Altrimenti salvi nel vector la parola da sostituire a quella letta.

    Finito questo piccolo lavoro, salvi in un nuovo file il contenuto del Vector.


    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
    no, il file di testo in questione può essere un normale testo composto da più parole per riga.

    io vorrei effettuare la sostituzione della parola direttamente nel file senza utilizzare nessuna struttura dati. Sapete aiutarmi per questo?

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    La classe String ha il metodo replaceAll che consente di sostituire una parola che rispetta l'espressione regolare passata come parametro con un'altra.
    Leggi per riga, applichi il replace e memorizzi in una variabile String. Alla fine scrivi questa String sul file.
    Per il sorting puoi anche usare un array. Leggi tutto il file memorizzandolo in una variabile String, usi il metodo split per ottenere l'array di parole e fai il sorting su quest'array. Poi Scorri l'array e scrivi ogni parola nel nuovo file.

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    41
    Originariamente inviato da giannimarz
    io vorrei effettuare la sostituzione della parola direttamente nel file senza utilizzare nessuna struttura dati. Sapete aiutarmi per questo?
    sicuramente Lele o altri ti sapranno rispondere, ma nel frattempo se ci mettono tanto potresti dare un'occhiata alle funzioni relative al testo (prova a fare una ricerca con "java scorrere file per parola" o simili) ... cioè Lele ha parlato di scorrere per riga e mettere ogni riga in un elemento del Vector. Se esiste una funzione per scorrere il file per riga non lo so ma è probabile che se esiste, esiste anche una per scorrerlo per parola. Se anche non esistono, comunque al limite la crei, ma a questo punto devi scorrere il file carattere per carattere (il file dovrebbe essere una sequenza di caratteri, per cui questo dovrebbe certamente essere possibile) e in questo caso per riconoscere la parola devi fare una funzione che identifichi dove sta il carattere di 'spazio' (se erano su righe diverse sarebbe stato un carattere di 'a capo') e metti tutti i caratteri che stanno tra uno spazio e un'altro in un elemento del tuo array/vettore. Se le cose stanno così, come vedi ti trovi ad avere ogni parola in un elemento dell'array/vector e non altrimenti. Se invece esiste una funzione che ti scorre il file parola per parola, allora puoi vedere... comunque è probabile che man mano che la scorra comunque la metta in una struttura dati! Dunque ti troveresti lo stesso ad avere un array/vector ;-)

  10. #10
    ho già trovato dei metodi che mi permettono di scorrere il file per parola, per riga o anke per carattere.
    Quindi effettuo la ricerca della parola, la effettuo direttamente sul file, e fin qui non ho avuto problemi.
    una volta trovata la parola dovrei sostituirla con un altra,e quindi scrivere sul file nel punto in cui è stata trovata la parola, invece riesco solo a scrivere in coda al file, cioè alla fine; oppure svuotare il file e scrivere dall inizio. è questo il problema sostanzialmente.

    una soluzione è quella di copiare il contenuto del file in un array, memorizzandolo per riga o parola, o anche in una variabile, sostituire la parola e poi ricopiare tutto sul file.

    ma vorrei evitare questo e accedere in scrittura al file in modo diretto e sostituire la parola,e non riscrivere quindi l'intero file, smpre che qst sia possibile.

    grazie a tutti

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.