Autor
|
Tema: Ejercicio Java (Leído 2,331 veces)
|
Baal_30
Desconectado
Mensajes: 248
|
Buenas, necesito hacer un código que cuente el número de palabras que contiene un String. Lo he hecho contando los espacios y sumando uno, pero tiene que contar con la posibilidad de que se hayan introducido 2 o más espacios... El código que tengo hasta ahora y donde me he quedado atascado es este : import java.util.Scanner; public class CuentaPalabras{ static int cuentaPalabras (String cad ){ int contador = 1, n1, n2=0; while(n2!=-1){ n1 = cad.indexOf(" "); n2= cad.indexOf(" ", (n1+1)); pos = n1; if((n2-n1)>1){ contador++; } } return contador; } public static void main (String[] args ){ Scanner S = new Scanner (System. in); System. out. println("Introduce una frase:"); cadena = S.nextLine(); System. out. println("La cadena introducida tiene :"+cuentaPalabras (cadena )+" palabras"); } }
Un saludo.
|
|
|
En línea
|
«La suerte es el cuidado de los detalles». -Winston Churchill
|
|
|
Shell Root
|
Yo preferiría utilizar .charAt() para recorrer todos los caracteres uno a uno y así identificar la cantidad total, por ejemplo: (No tengo un compilador así que lo haré mentalmente)static int CountWord (String oWord ) { int oLengthWord = oWord.length(); int oCountSpace = 0; if(oLengthWord > 0) { for(int i = 0; i < oLengthWord; i++) { if( oWord.charAt(i) = " " ) oCountSpace++; } } }
EDIT: No había leido bien lo que necesitabas ajajjaa, espera un momento si puedo lograr algo.
|
|
« Última modificación: 12 Diciembre 2014, 23:54 pm por Shell Root »
|
En línea
|
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
|
|
|
Baal_30
Desconectado
Mensajes: 248
|
Si, así te cuenta las palabras correctamente ( en realidad tendrías que inicializar el contador a 1, ya que la última palabra sino no la contaría porque no lleva espacio ).
El problema es que tengo que tener en cuenta si se introducen más de un espacio seguido, que no los cuente como palabras. Por ejemplo : Hola que tal <--- Tiene 3 palabras, y el código ese contaría 2 espacios y si le sumas uno al contador, pues te daría 3. Pero : Hola que tal <--- También tiene 3 palabras, pero con ese código no te indicaría las que realmente tiene, sino el número de espacios que hay (más uno).
|
|
|
En línea
|
«La suerte es el cuidado de los detalles». -Winston Churchill
|
|
|
agusdmb
Desconectado
Mensajes: 6
|
lo q yo haria es usar lo q el te dijo mas arriba... pero hacer antes un pre procesado del texto ingresado.. (esto no es lo mas eficiente, pero teniendo ya parte hecho si es lo mas rapido)
entonces deberias hacer una funcion q le pases una cadena de texto por ejemplo:
" holaa como estas y muchos espacios salteados , a al final tambien "
y lo q el pre procesado haga sea sacar todos los espacios antes de la primer letra, y desp de la ultima, y a la vez cada vez q encuentre un espacio en el texto, quitar los siguientes hasta la proxima letra...
luego la salida de este metodo se lo metes al q ya tienes
|
|
|
En línea
|
|
|
|
crack81
Desconectado
Mensajes: 222
|
prueba con este codigo parece que resuelve tu problema public static void contar(){ int cont=1; String data =" hola como eats asdgasd asdg "; for(int i=0;i<data.length();i++){ if(i>0 && data.charAt(i)==' ' && data.charAt(i-1)!=' '){ cont++; } } if(data.length()>0 && data.charAt(data.length()-1)==' ' || cont<=2){ cont--; } }
el codigo intenta evitar las posibles excepciones
|
|
« Última modificación: 14 Diciembre 2014, 07:36 am por crack81 »
|
En línea
|
Si C/C++ es el padre de los lenguajes entonces ASM es dios.
|
|
|
Baal_30
Desconectado
Mensajes: 248
|
Voy a probar el código ¡! Muchas gracias a todos Un saludo.
|
|
|
En línea
|
«La suerte es el cuidado de los detalles». -Winston Churchill
|
|
|
MNicolas
Desconectado
Mensajes: 127
Developer
|
String delimitadores= "[ .,;?!¡¿\'\"\\[\\]]+"; listaDePalabras = frase.split(delimitadores);
La string delimitadores contiene los separadores, entre corchetes y con un + al final. Una vez decididos los delimitadores que quieres el .split te genera una array con las palabras.
miString.split(delimitadores);
esto lo que devuelce es una string con las palabras del string usando como referencia los delimitadores, da igual que tengas tres espacios seguidos, comas etc... funciona perfectamente.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ejercicio Java
Ejercicios
|
incog
|
4
|
7,885
|
13 Noviembre 2005, 03:14 am
por Hadess_inf
|
|
|
ejercicio java
Java
|
piticli25
|
1
|
2,369
|
19 Diciembre 2013, 13:39 pm
por JADP
|
|
|
[JAVA] Ejercicio Java , no se por donde cogerlo
Java
|
Xh4xor23
|
8
|
5,419
|
1 Abril 2014, 23:02 pm
por 7Bliz
|
|
|
Ejercicio Java
Programación General
|
virustrol
|
2
|
2,600
|
29 Marzo 2014, 16:12 pm
por virustrol
|
|
|
Ejercicio Java
Java
|
Rams23
|
1
|
1,780
|
14 Diciembre 2014, 05:58 am
por agusdmb
|
|