Visualizzazione dei risultati da 1 a 10 su 15

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    8
    Quote Originariamente inviata da Ansharja
    Cosa intendi esattamente con questa frase? Se il carattere n-esimo è il primo carattere di una parola penso sia ovvio che devi mandarla tutta a capo (rientra sempre nel caso "a-metà"). Se il carattere n-esimo è lo spazio inserito prima della parola, a maggior ragione la manderai tutta a capo... Boh forse ho capito male io.
    Hai capito benissimo. Il problema sorge quando l'n-esimo carattere cade a metà parola perché devo tornare indietro e troncare la riga prima dell'inizio della parola e sistemare gli spazi.


    Quote Originariamente inviata da Ansharja
    Il fatto che ci possano essere tab o spazi multipli complica un pochino le cose. Fossi in te per ora penserei al resto. Lo dico perché nel caso tu voglia "spezzare" la stringa nelle varie parole, se spezzi in base allo spazio singolo e ne trovi uno multiplo ottieni un risultato poco piacevole ... Quindi converrebbe usare un'espressione regolare per la divisione.
    Sisi ieri provando qualcosa ho pensato che si può risolvere con un'espressione regolare del tipo split("\\s+")


    Se ora il problema ti è chiaro però dovresti incominciare a proporre tu delle soluzioni, che sia a livello di codice o di procedimento da seguire. Comincia a "buttare giù" qualcosa (ovviamente chiedi sempre per altri problemi)
    Grazie io sto intanto a buttare giù qualche riga di codice per capire "a pezzi" come deve lavorare il programma. Intanto sto cercando di capire come leggere un intero da file e metterlo in una variabile intera (mi serve perché nella prima riga del file ho sempre un intero che mi indica la dimensione massima di ogni stringa).

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Quote Originariamente inviata da Dedrha Visualizza il messaggio
    Hai capito benissimo. Il problema sorge quando l'n-esimo carattere cade a metà parola perché devo tornare indietro e troncare la riga prima dell'inizio della parola e sistemare gli spazi.
    Ok, "tornare indietro" comunque non è particolarmente complicato, dipende dal procedimento che seguirai.

    Quote Originariamente inviata da Dedrha Visualizza il messaggio
    Sisi ieri provando qualcosa ho pensato che si può risolvere con un'espressione regolare del tipo split("\\s+")
    Se sei già a questo punto sei pronto per partire . Non sono sicurissimo che un'espressione regolare che preveda gli spazi multipli funzioni sempre anche con il "tab". Ovviamente la tabulazione rappresenta spazi multipli, non so però se la codifica dia sempre il "match", in ogni situazione e piattaforma (non me intendo). Al massimo puoi cercare entrambi e sei sicuro che funzioni ...

    Quote Originariamente inviata da Dedrha Visualizza il messaggio
    Intanto sto cercando di capire come leggere un intero da file e metterlo in una variabile intera (mi serve perché nella prima riga del file ho sempre un intero che mi indica la dimensione massima di ogni stringa).
    Leggere da file dovrai sicuramente imparare a farlo per risolvere il problema. A mio parere non è la tua priorità però. Quando inizierai a scrivere l'algoritmo, dovrai sicuramente fare varie prove per correggere gli errori e vedere se funziona in ogni caso. Se ad ogni prova devi modificare il file da cui leggi e scrivere l'output sul file nuovo per vedere se funziona, perdi molto tempo per nulla, devi lavorare su file diversi, verificare che siano aggiornati, ed essere sicuro di non sbagliare la lettura/scrittura.

    Quindi io ti consiglierei di partire dichiarando tu un intero, es. numeroRighe, creare un vettore di stringhe che contenga delle ipotetiche righe di un file (in lettura è molto probabile che tu leggerai il file "a righe", ad esempio con BufferedReader) e partire a scrivere la soluzione.
    Una volta che funziona è un attimo generalizzare il tutto. Ovviamente è una tua scelta, se vuoi partire dalla lettura fai pure, secondo me però ci metterai di più

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    8
    Quote Originariamente inviata da Ansharja
    creare un vettore di stringhe che contenga delle ipotetiche righe di un file
    Quindi tu dici di andare a prendere le righe del file e andarle a mettere in un vettore di stringhe? Sto cercando di capire come farlo ma lo vedo un pò complicato.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Dedrha Visualizza il messaggio
    Quindi tu dici di andare a prendere le righe del file e andarle a mettere in un vettore di stringhe? Sto cercando di capire come farlo ma lo vedo un pò complicato.
    Questa invece è proprio la parte più semplice e "lineare" di tutto! Meglio comunque usare una lista (ArrayList<String>), poi un array String[] lo puoi ottenere successivamente.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Quote Originariamente inviata da Dedrha Visualizza il messaggio
    Quindi tu dici di andare a prendere le righe del file e andarle a mettere in un vettore di stringhe? Sto cercando di capire come farlo ma lo vedo un pò complicato.
    No, io ti sto suggerendo di creartele da te

    Quando leggerai il file potresti anche salvartelo in un'unica stringa, con i caratteri di "a capo" compresi. Ma questo ti complica notevolmente le cose, perché il problema è strutturato di per sé a righe per la giustificazione.

    Quindi probabilmente dovrai salvarti un vettore di stringhe, o una lista, o altro, ma comunque mantenendone la separazione (io userei una lista se dovessi farlo). Ma il mio consiglio era di non preoccuparti ora del file, lavorando su un qualcosa di temporaneo che ti crei tu. Ad esempio nella tua classe potresti fare questo da qualche parte :

    codice:
    int numeroCaratteri = 50;
    String[] righe = new String[4];
    righe[0] = "Riga corta da riempire con spazi";
    righe[1] = "      Seconda  riga del file di testo        con spazi multipli";
    righe[2] = "Terzarigadelfileconunaparolatuttaattaccatacheandràsicuramenteasforarelalunghezza";
    righe[3] = "Riga che sarà divisa a metà di una parola per mantenere la giustificazione come richiesto";
    // ....
    E poi cominci a lavorare su quelle stringhe da subito, senza preoccuparti della gestione del file. Poi fai tu

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    8
    Quote Originariamente inviata da Ansharja Visualizza il messaggio
    No, io ti sto suggerendo di creartele da te
    Ok quindi quello che dici tu è prima fare pratica con righe[] create da me, quindi lavorare per aumentare spazi in modo tale da far essere ogni riga da n caratteri.
    Una volta capito come gestire questo devo prendere intero n da file per il numero caratteri, le stringhe da file e lavorare non più con stringhe dettate da me ma con stringhe dettate da file.
    Questo è quello che vuoi consigliarmi?

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Quote Originariamente inviata da Dedrha Visualizza il messaggio
    Ok quindi quello che dici tu è prima fare pratica con righe[] create da me, quindi lavorare per aumentare spazi in modo tale da far essere ogni riga da n caratteri.
    Una volta capito come gestire questo devo prendere intero n da file per il numero caratteri, le stringhe da file e lavorare non più con stringhe dettate da me ma con stringhe dettate da file.
    Questo è quello che vuoi consigliarmi?
    Esatto. Solo per comodità naturalmente, visto che il grosso del tuo problema è la giustificazione del testo, io partirei così. Nell'esempio ho usato un array ma quando leggerai da file andrai meglio con una lista, non so se le conosci già.

Tag per questa discussione

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.