hola quisiera si me pudieran ayudar con este codigo me dicen que es mas facil hacerlo con las clase StringTokenizer pero no me sale el problema que es este:
Escriba un programa en Java que lea 20 palabras de texto desde el teclado e imprima una
tabla que indique el n˙mero de palabras de una letra, de dos letras, de tres letras, etcÈtera, que
aparezcan en el texto. Por ejemplo, considerando la frase:
[Ser o no Ser: Èse es el dilema, y Èse es el Ser de todo.]
Palabras de 1 letra = 2.
Palabras de 2 letra = 6.
Palabras de 3 letra = 5.
Palabras de 4 letra = 1.
Palabras de 5 letra = 0.
Palabras de 6 letra = 1.
Gracias por su ayuda
Copyright © 2024 Q2A.MX - All rights reserved.
Answers & Comments
Verified answer
Que tal, se puede resolverse así:
public static void main(String[] args) throws IOException {
System.out.println("Ingrese la frase");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in, "ISO8859-1"));
String frase = br.readLine().toString();
String fraseNueva = "";
for (int i = 0; i < frase.length(); i++) {
if (Character.isLetter(frase.charAt(i)) || frase.charAt(i) == ' ') {
fraseNueva += frase.charAt(i);
}
}
String[] palabras = fraseNueva.split(" ");
int[] cuantas = new int[10];
for (int i = 0; i < palabras.length; i++) {
int nLetras = palabras[i].length() - 1;
cuantas[nLetras]++;
}
for (int i = 0; i < cuantas.length; i++) {
System.out.println("Palabras de " + (i + 1) + " letras: " + cuantas[i]);
}
}
A mi me funciona bien, no se si necesites otra cosa, de ser así haz una nueva preguntas, nos vemos!
y para hacerlo sin usar ciclos???
Hola, te dare algunas ideas aunque no te hare el trabajo:
1. utiliza la clase scanner para capturar lo que se digite por teclado:
Scanner scan = new Scanner(System.in);
2. Cada palabra la capturas en un arreglo
for (int i=0; i<Arreglo.length; i++)
{
Indice=i+1;
System.out.println("Escriba la palabra # "+Indice+"=");
Arreglo[i] = scan.nextLine();
}
3. una vez lleno el arreglo lo recorres y cuentas la cantidad de letras de cada palabra. A la par llenas un arreglo2 con la cantidad de letras contadas.
for (int i=0; i<Arreglo.length; i++)
{
palabra= Arreglo[i];
int posicion=i+1;
int Letras = palabra.length();
Arreglo2[i]=Letras;
}
4. crear un arreglo 3 y lo llenas con el conteo resultante de la cantidad de veces que se repita cada numero en el arreglo2
for (int i=0; i<Arreglo2.length; i++)
{
ContadorLetras=Arreglo2[i];
switch(ContadorLetras)
{
case 1: Arreglo3[0]=Arreglo3[0]+1; break;
case 2: Arreglo3[1]=Arreglo3[1]+1; break;
case 3: Arreglo3[2]=Arreglo3[2]+1; break;
case 4: Arreglo3[3]=Arreglo3[3]+1; break;
case 5: Arreglo3[4]=Arreglo3[4]+1; break;
case 6: Arreglo3[5]=Arreglo3[5]+1; break;
case 7: Arreglo3[6]=Arreglo3[6]+1; break;
case 8: Arreglo3[7]=Arreglo3[7]+1; break;
case 9: Arreglo3[8]=Arreglo3[8]+1; break;
}
}
for (int i=0; i<Arreglo3.length; i++)
{
int CantidadLetras=i+1;
System.out.println("Palabras de "+CantidadLetras+" letras ="+Arreglo3[i]);
}
Bueno, yo le compile en mi equipo y funciona, pero lo que te pongo son apartes del código, miralo y ve creando tu propio código aplicando lo que te muestro aqui y de seguro te funciona.