Programa
Java para contar el número de palabras que contiene una frase.
El
programa lee un texto por teclado y lo guarda en un String. A
continuación mostrará el número de palabras que contiene.
La
forma más sencilla de resolverlo es utilizando la clase
StringTokenizer. Esta clase sirve para dividir un String en partes,
según unos delimitadores. Uno de estos delimitadores es el espacio
en blanco, por lo tanto podemos aplicar StringTokenizer al texto ya
que las palabras en un texto están separadas por espacios en blanco.
El método countTokens() nos dirá cuantos elementos se han obtenido
o lo que es lo mismo, cuantas palabras contiene el texto.
//Programa que cuenta el número de palabras de un texto.
import java.util.Scanner;
import java.util.StringTokenizer;
public class ContarPalabras {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String frase;
System.out.print("Introduce una frase: ");
frase = sc.nextLine();
StringTokenizer st = new StringTokenizer(frase);
System.out.println("Número de palabras: " + st.countTokens());
}
}
Como
alternativa a utilizar la clase StringTokenizer, podemos resolverlo
utilizando solo los métodos de la clase String. En este caso se
tratará de buscar los espacios en blanco dentro de la cadena y
contarlos.
Supondremos
que las palabras están separadas entre ellas por un solo espacio en
blanco. Para encontrar los espacios en blanco podemos usar el método
indexOf(caracter) que devuelve la posición donde se ha encontrado el
carácter dentro de la cadena. Si el carácter no se encuentra
devuelve -1. También se puede usar indexOf (carácter, p) en este
caso busca el carácter a partir de una posición p.
//Método que recibe un String y devuelve el número de palabras que contiene
public static int contarPalabras(String s) {
int contador = 1, pos;
s = s.trim(); //eliminar los posibles espacios en blanco al principio y al final
if (s.isEmpty()) { //si la cadena está vacía
contador = 0;
} else {
pos = s.indexOf(" "); //se busca el primer espacio en blanco
while (pos != -1) { //mientras que se encuentre un espacio en blanco
contador++; //se cuenta una palabra
pos = s.indexOf(" ", pos + 1); //se busca el siguiente espacio en blanco
} //a continuación del actual
}
return contador;
}
al intentar correr el programa tengo un error por la clase principal
ResponderEliminarHola Andrea, podrías indicar el tipo de error que te da? En el ejemplo la clase principal se llama ContarPalabras así que tu proyecto debería llamarse también así. De todas formas si has llamado al proyecto de otra forma copia y pega solo el código del método main y te debe de funcionar.
EliminarBuenas noches, una pregunta. Si entre dos palabras hay dos espacios en blancos, el programa pincha?
ResponderEliminarsi
EliminarHola me podrias decir como hago para que en vez de palabras me sume el valor de los numeros a ingresar
ResponderEliminarTe lo agradeceria bastante
seria con un vector
EliminarHola me gustaria saber como hacer despues de eso para que me dijera en que lugar se encuentra una palabra determinada. Gracias!
ResponderEliminarMe salió de otra forma, es peor asi?
ResponderEliminarimport java.util.*;
public class Program
{
public static void main(String[] args) {
Scanner entrada=new Scanner(System.in);
String frase=entrada.nextLine();
frase=frase.trim();
int palabra=1;
for(int i=0; i<frase.length(); i++){
if(frase.charAt(i)==' '){
palabra++;
}
}
if(frase.equals("")){
palabra=0;
}
System.out.println("La frase tiene "+palabra+" palabras(s)");
}
}
muchas gracias por tu ejemplo:) me sirvió de mucho
EliminarHola!, podrías explicar o comentar las líneas de tu código, para que me quede más claro. Te lo agradecería muchísimo!
ResponderEliminarMe salió de otra forma, es peor asi?
Eliminarimport java.util.*;
public class Program
{
public static void main(String[] args) {
Scanner entrada=new Scanner(System.in);crea una instancia objeto de tipo Scanner llamada entrada
String frase=entrada.nextLine();//almacena en la variable frase el string que introduzcas como entrada
frase=frase.trim();//Suprime si dejas espacios al principio o al final de la frase introducida
int palabra=1; //En caso de que no se cumpla ninguna condición imprime 1
for(int i=0; i<frase.length(); i++){ //incrementa en 1 segun la longitud en caractetes en la frase
if(frase.charAt(i)==' '){
palabra++;//va recorriendo el array de izquierda a derecha conforme i aumenta conprueba si ese caracter es un espacio, de ser cierto incrementa la variable palabra en 1
}
}
if(frase.equals("")){
palabra=0;// si no introduces ninguna frase/ cadena de texto vacia la variable palabra cambia su valor a 0
}
System.out.println("La frase tiene "+palabra+" palabras(s)");// imprime el valor que ha obtenido la variable palabra
}
}
Hola, añado mi versión donde si se deja más de un espacio entre palabras no cuente palabras de más.
ResponderEliminarpublic class Cosa1 {
static Scanner sn = new Scanner(System.in);
public static int cuentaPalabras(String frase) {
int cont = 1, pos;
int cont2 = 0;
if (frase.isEmpty()) {
System.out.println("No se ha introducido nada");
cont = 0;
}
for (int i = 0; i < frase.length(); i++) {
if(frase.charAt(i)==' '&&frase.charAt(i+1)==' '){
cont2++;
}
if (frase.charAt(i) == ' ') {
cont++;
}
}
return cont-cont2;
}
public static void main(String[] args) {
System.out.println("Introduce una frase");
String frase = sn.nextLine().trim();
System.out.println("Numero de palabras: " + cuentaPalabras(frase));
}
}
Realizar un método sin retorno y sin parámetros, que pida al usuario que ingrese por teclado una frase cualquiera, luego van a recorrer caracter por caracter esa frase y van a presentar en pantalla el número de vocales que tiene dicha frase
ResponderEliminarCrear un programa que lea una determinada cantidad de palabras. Mostrar todas las
ResponderEliminarpalabras leídas. Luego indicar una palabra a modificar, si existen varias palabras que
coincidan con la palabra a modificar, debe modificarlas todas. Luego mostrar todas las
palabras de la lista. (debe funcionar si la palabra está con minúsculas o mayúsculas).
me pueden ayudar ?
CREAR UNA MATRIZ DE M*N EN EL QUE SE GUARDE UN TEXTO DE UNA CARTA O ALGÚN ESCRITO O SIMPLEMENTE SE LLENA CON CARACTERES ALEATORIAMENTENTE, LA MATRIZ DEBE DE SER DE POR LO MENOS 250 POSICIONES
ResponderEliminarDESPUES DE ESO; CON LA MATRIZ LLENA, CREAR UN ARREGLO EN EL QUE SE GUARDE
Eliminar1. Cuantas letras a hay en el texto
2. Cuantas letras e hay en el texto
3. Cuantas letras i hay en el texto
4. Cuantas letras o hay en el texto
5. Cuantas letras u hay en el texto
6. Cuantas letras consonantes hay en el texto
7. Cuantos espacios en blanco hay en el texto
8. Cuantos caracteres diferentes a los anteriores hay en el texto
IMPRIMIR LA MATRIZ ORIGINAL, EL VECTOR CON LOS DATOS E INDICAR CUAL ES EL CARACTER QUE MÁS SE REPITE
Eliminarpackage palabras;
ResponderEliminarpublic class principal3 {
public static void main(String[] args) {
String frase = " Bienvenidos al curso de java basico nivel tres 2006 ";
int cont =0;
frase= frase.trim();
String [] ArreFrase= frase.split("");
for(int i = 0 ; i<ArreFrase.length;i++){
if(ArreFrase[i].equals(" ") ){
cont ++;
if(ArreFrase[i-1].equals(" ")){
cont--;
}
}
}
System.out.println(" el numero de palabras es "+ ArreFrase.length+" "+ (cont+1));
}
}