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

    Contare parole in una frase

    Ciao ragazzi, vorrei un aiuto su questo problema: Data in input (da console) una frase visualizzare il numero delle parole contenute. Non so come contare le parole in java. Mi aiutate x favore? Grazie in anticipo.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Saverioapple Visualizza il messaggio
    Non so come contare le parole in java.
    Devi prima stabilire quale è (o quali sono) il separatore per delimitare e separare quindi le parole. Solo spazi?
    Per spezzare una stringa ci sono principalmente due modi: java.util.StringTokenizer che tratta una serie di caratteri "delimitatori" oppure split() di String che usa una espressione regolare come separatore.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Per delimitare le parole devo usare spazi, punti e le virgole. Vorrei sapere se si può fare senza usare: java.util.StringTokenizer
    Cioè vorrei sapere se si possono usare le if, credo di si giusto? Se si come dovrei fare?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Saverioapple Visualizza il messaggio
    Per delimitare le parole devo usare spazi, punti e le virgole. Vorrei sapere se si può fare senza usare: java.util.StringTokenizer
    Cioè vorrei sapere se si possono usare le if, credo di si giusto? Se si come dovrei fare?
    Certo, si possono usare charAt(), substring() e altro necessario. Insomma tutta la logica di ricerca ed estrazione dei token la fai "a mano". Se lo scopo è "didattico", ovviamente ok, è un conto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Se lo faccio così è sbagliato?

    codice:
    package numparole;
    import java.util.Scanner;
    public class numparole {
     public static void main(String[] args) {
      // TODO Auto-generated method stub
      @SuppressWarnings("resource")
      Scanner in=new Scanner(System.in);
      String frase=new String();
      System.out.println("Inserisci una frase");
      frase=in.nextLine();
      int p,contparole=0;
      for(int i=0; i<frase.length();i++)
      {
       p=frase.charAt(i);
       if((p==' ') || (p=='.') || (p==','))
       {
        contparole++;
       }
      }
      System.out.println("Numero parole contenute->"+contparole);
     }
    }

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Saverioapple Visualizza il messaggio
    Se lo faccio così è sbagliato?
    Sì, è sbagliato nel senso che non stai contando le parole ma quanti caratteri di delimitazione ci sono!

    Tu puoi avere:

    [...delimitatori...][parola][...delimitatori...][parola] ......

    Dovresti contare +1 solo quando si passa da un carattere delimitatore ad uno non-delimitatore (ovvero della parola). Puoi farlo con una banale variabile che indica in che "stato" eri al carattere precedente.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Come dovrei fare quindi??

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Saverioapple Visualizza il messaggio
    Come dovrei fare quindi??
    Tieni una variabile di "stato", es. isDelimiter, inizialmente a true.
    Quando passi da un delimitatore a un non-delimitatore, conti e metti isDelimiter a false. Quando al contrario passi da un non-delimitatore a un delimitatore, metti isDelimiter a true.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Ho provato così e funziona...
    codice:
    package numparole;
    import java.util.Scanner;
    public class numparole {
     public static void main(String[] args) {
      // TODO Auto-generated method stub
      @SuppressWarnings("resource")
      Scanner in=new Scanner(System.in);
      String frase=new String();
      System.out.println("Inserisci una frase");
      frase=in.nextLine();
      int c,contparole=1;
      for(int i=0; i<frase.length();i++)
      {
       c=frase.charAt(i);
       if(c==' ')
       {
        contparole++;
       }
       
      }
      System.out.println("Numero di parole contenute->"+contparole);
     }
    }

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Saverioapple Visualizza il messaggio
    Ho provato così e funziona...
    codice:
      int c,contparole=1;
      for(int i=0; i<frase.length();i++)
      {
       c=frase.charAt(i);
       if(c==' ')
       {
        contparole++;
       }
       
      }
    Concettualmente stai ancora contando gli spazi ... non le parole. Il barbatrucco di partire da 1 sì, ti dà il risultato voluto se hai es. "aa bb cc" ma in generale ha poco senso.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.