Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2015
    Messaggi
    11

    Programma che legge una frase di lettere minuscole e spazi (con più spazi possibili tra le parole)

    Buongiorno ,
    il mio professore ha lasciato come compito quello di scrivere due programmi in Java (ambiente di sviluppo Eclipse): uno che legge una frase di lettere minuscole e spazi, con solo uno spazio tra le parole; il secodno legge una frase di lettere minuscole e spazi, questa volta più di uno possibili (come da titolo). Ho scritto abbastanza facilmente il primo. Sul secondo sono bloccato. Espongo dunque i miei quesiti: esiste un particolare metodo, come ad esempio qui ho usato .trim() per eliminare gli spazi all'inizio e alla fine delle parole, che mi consentirebbe di riconoscere la presenza di più spazi? oppure basta lavorare (come sto provando a fare ma senza risultato) sul primo programma per renderlo più "raffinato"?
    Non ho trovato nulla riguardo alla prima domanda che vi ho fatto, ma non si sa mai. In generale sto provando a migliorare il primo programma scritto per dare vita al secondo, ma la mia perplessità è la seguente: nel mio primo caso attraverso un ciclo for e un if, controllo le parole quando trovo uno spazio mi fermo, dico che li finisce la parola e riparto così. Non riesco a capire come posso fare questo con spazi che possono essere maggiori di uno! Aspetto qualche consiglio!
    Ho riscritto la parte centrale del primo programma di cui ho parlato, magari può aiutare:

    int inizio =0;
    int fine;
    String frase = inDati.getString("Inserisici una frase");
    frase = frase.trim();
    for (int i=0; i<frase.length(); i++){
    if (frase.charAt(i) == ' '){
    fine = i;
    String parola = frase.substring(inizio, fine);
    uDati.printLine(parola);
    inizio = i+1;
    }
    }
    uDati.print(frase.substring(inizio,frase.length()) );
    uDati.setVisible(true);

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da MrBlonde Visualizza il messaggio
    esiste un particolare metodo, come ad esempio qui ho usato .trim() per eliminare gli spazi all'inizio e alla fine delle parole, che mi consentirebbe di riconoscere la presenza di più spazi?
    Non ho capito ..... vuoi eliminare più spazi? (trim() fa già questo, appunto) O vuoi verificare se inizia con spazi? (es. if (inizia_con_spazi) { fai_qualcosa; } )

    Quote Originariamente inviata da MrBlonde Visualizza il messaggio
    nel mio primo caso attraverso un ciclo for e un if, controllo le parole quando trovo uno spazio mi fermo, dico che li finisce la parola e riparto così. Non riesco a capire come posso fare questo con spazi che possono essere maggiori di uno! Aspetto qualche consiglio!
    Quando passi da spazio (o inizio stringa) a non-spazio, hai l'inizio di parola. Quando passi da non-spazio a spazio (o fine stringa), hai la fine della parola. Questo è abbastanza facile da fare, si può fare in diversi modi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2015
    Messaggi
    11
    Il mio scopo è quello di scrivere un programma che data una frase con spazi tra le parole mi stampi a video solo le parole. Quindi se scrivo "ciao andbin" mi stampi:
    ciao
    andbin
    E questo è il primo programma che ho scritto, funzionate. Il secondo dovrebbe fare la stessa cosa, ma con la possibilità che ci siano più spazi tra le stesse, quindi "ciao andbin" diventerebbe:
    ciao
    andbin
    Il metodo trim() per come mi è stato spiegato elimina eventuali spazi all'inizio e alla fine della frase, aiutandomi quindi nella scrittura del programma. Il mio problema è dunque capire se il programma che ho scritto può essere migliorato a questo scopo o devo pensare ad altro! Quello che hai scritto tu l'ho fatto e capito!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da MrBlonde Visualizza il messaggio
    Il metodo trim() per come mi è stato spiegato elimina eventuali spazi all'inizio e alla fine della frase, aiutandomi quindi nella scrittura del programma. Il mio problema è dunque capire se il programma che ho scritto può essere migliorato a questo scopo o devo pensare ad altro!
    A dire il vero, trim() non servirebbe neanche se si ragionasse a "stati" in modo da saltare più spazi. Basta che tieni una variabile es. inizioParola che se è -1 vuol dire che non sei in una parola, se >= 0 sei in una parola. All'inizio ovviamente vale -1.

    Se inizioParola è -1 E trovi un non-spazio, hai l'inizio della parola, aggiorni inizioParola e continui con il prossimo carattere.
    Se inizioParola non è -1 E trovi uno spazio hai la fine della parola, prendi la parola e rimetti inizioParola a -1 e continui ecc...

    Questo ti permette di ignorare più spazi, perché se inizioParola è -1 e trovi spazio, semplicemente non fai niente ... non devi neanche gestire questo caso .... ma solo i due punti sopra.
    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
    Mar 2015
    Messaggi
    11
    Grazie molto gentile!

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.