es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Imprimiendo número de palabras en el párrafo.

Estoy tomando la entrada del usuario en forma de párrafo y tengo que contar las palabras en el párrafo hasta el párrafo de EOF. El usuario no ingresará palabras clave “Quit/stop” desde la consola, sino solo el párrafo EOF. No estoy obteniendo el resultado deseado.

import java.io.*;

public class CountWords 
    {
        public static void main (String[] args) throws IOException
        {
            InputStreamReader r=new InputStreamReader(System.in);
            BufferedReader br=new BufferedReader(r);

            int wordCount = 1;
            String str;
            while ((str=br.readLine())!=null)
            {
               str = br.readLine();

             for (int i = 0; i < str.length(); i++) 
             {
                if (str.charAt(i) == ' ' && str.charAt(i+1)!=' ') 
                {
                    wordCount++;
                } 
             }
            System.out.println(wordCount);
           }

        }
    }

Entrada de ejemplo: –

This is a sample line of text
This is another line of text
This line is the 3rd line
This junk line contains 989902 99dsaWjJ8            015
This is the fifth and the last line of input</p>

<p>Resultado: 36
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Hay algunos problemas con el código dado que están evitando que genere la salida deseada:

    1. La instrucción str = br.readLine(); dentro del bucle while es innecesaria porque la misma línea ya se asigna a str en la condición del bucle.
    2. La variable wordCount debería inicializarse en 0 en lugar de 1 para evitar contar la primera palabra dos veces.
    3. La condición if en el bucle for debe comprobar si hay un espacio o un carácter de nueva línea ('\n') en lugar de solo un espacio.

    Aquí está el código corregido:

    import java.io.*;
    
    public class CountWords {
        public static void main(String[] args) throws IOException {
            InputStreamReader r = new InputStreamReader(System.in);
            BufferedReader br = new BufferedReader(r);
    
            int wordCount = 0;
            String str;
            while ((str = br.readLine()) != null && !str.equals("EOF")) {
                for (int i = 0; i < str.length(); i++) {
                    if (str.charAt(i) == ' ' || str.charAt(i) == '\n') {
                        wordCount++;
                    }
                }
            }
            System.out.println(wordCount);
        }
    }
    

    Este código lee la entrada del usuario hasta que se ingresa la palabra clave EOF y cuenta el número de palabras en los párrafos de entrada. Tenga en cuenta que la variable wordCount solo se imprime al final, fuera del bucle while, para asegurarse de que se haya leído toda la entrada antes de imprimir el recuento final.

Comments are closed.