elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ejercicio Java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ejercicio Java  (Leído 2,331 veces)
Baal_30

Desconectado Desconectado

Mensajes: 248



Ver Perfil
Ejercicio Java
« en: 12 Diciembre 2014, 23:23 pm »

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 :

Código
  1. import java.util.Scanner;
  2. public class CuentaPalabras{
  3.  
  4.    static int cuentaPalabras(String cad){
  5.       int contador = 1, n1, n2=0;
  6.  
  7.       while(n2!=-1){
  8.       n1 = cad.indexOf(" ");
  9.       n2= cad.indexOf(" ", (n1+1));
  10.       pos = n1;
  11.  
  12.  
  13.  
  14.       if((n2-n1)>1){
  15.           contador++;
  16.        }
  17.    }
  18.  
  19.        return contador;
  20.  
  21.    }
  22.    public static void main(String[] args){
  23.        Scanner S = new Scanner(System.in);
  24.        String cadena;
  25.  
  26.        System.out.println("Introduce una frase:");
  27.        cadena = S.nextLine();
  28.  
  29.        System.out.println("La cadena introducida tiene :"+cuentaPalabras(cadena)+" palabras");
  30.  
  31.    }
  32. }

Un saludo.


En línea

«La suerte es el cuidado de los detalles». -Winston Churchill
Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
Re: Ejercicio Java
« Respuesta #1 en: 12 Diciembre 2014, 23:52 pm »

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)

Código
  1. static int CountWord(String oWord)
  2. {
  3.   int oLengthWord = oWord.length();
  4.   int oCountSpace = 0;
  5.  
  6.   if(oLengthWord > 0)
  7.   {
  8.      for(int i = 0; i < oLengthWord; i++)
  9.      {
  10.         if( oWord.charAt(i) = " " )
  11.            oCountSpace++;
  12.      }
  13.   }
  14. }

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 Desconectado

Mensajes: 248



Ver Perfil
Re: Ejercicio Java
« Respuesta #2 en: 12 Diciembre 2014, 23:56 pm »

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 Desconectado

Mensajes: 6


Ver Perfil
Re: Ejercicio Java
« Respuesta #3 en: 14 Diciembre 2014, 05:55 am »

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 Desconectado

Mensajes: 222



Ver Perfil
Re: Ejercicio Java
« Respuesta #4 en: 14 Diciembre 2014, 07:06 am »

prueba con este codigo parece que resuelve tu problema

Código
  1. public static void contar(){
  2.        int cont=1;
  3.        String data=" hola como eats         asdgasd     asdg         ";
  4.        for(int i=0;i<data.length();i++){
  5.           if(i>0 && data.charAt(i)==' ' && data.charAt(i-1)!=' '){
  6.               cont++;
  7.  
  8.  
  9.           }
  10.  
  11.        }
  12.  
  13.        if(data.length()>0 && data.charAt(data.length()-1)==' ' || cont<=2){
  14.           cont--;
  15.        }
  16.  
  17.        System.out.println(cont);
  18.    }

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 Desconectado

Mensajes: 248



Ver Perfil
Re: Ejercicio Java
« Respuesta #5 en: 14 Diciembre 2014, 11:20 am »

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 Desconectado

Mensajes: 127


Developer


Ver Perfil WWW
Re: Ejercicio Java
« Respuesta #6 en: 18 Diciembre 2014, 18:22 pm »

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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ejercicio Java
Ejercicios
incog 4 7,885 Último mensaje 13 Noviembre 2005, 03:14 am
por Hadess_inf
ejercicio java
Java
piticli25 1 2,369 Último mensaje 19 Diciembre 2013, 13:39 pm
por JADP
[JAVA] Ejercicio Java , no se por donde cogerlo
Java
Xh4xor23 8 5,419 Último mensaje 1 Abril 2014, 23:02 pm
por 7Bliz
Ejercicio Java
Programación General
virustrol 2 2,600 Último mensaje 29 Marzo 2014, 16:12 pm
por virustrol
Ejercicio Java
Java
Rams23 1 1,780 Último mensaje 14 Diciembre 2014, 05:58 am
por agusdmb
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines