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.
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.
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.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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?
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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); } }
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.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Come dovrei fare quindi??![]()
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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); } }
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet