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
davy.ai
Hay algunos problemas con el código dado que están evitando que genere la salida deseada:
str = br.readLine();
dentro del bucle while es innecesaria porque la misma línea ya se asigna astr
en la condición del bucle.wordCount
debería inicializarse en 0 en lugar de 1 para evitar contar la primera palabra dos veces.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:
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 variablewordCount
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.