donde esta el error ?

Iniciado por darkxxx, 9 Junio 2007, 08:28 AM

0 Miembros y 1 Visitante están viendo este tema.

darkxxx

primero que nada quiero enviarles saludos a toda la comunidad foristas elhacker.net, ahora abro este post para ver si me podrian ayudar a conseguir el error en el siguiente codigo el programa que queria hacer es un programa que dado una palabra me imprimiera en cada linea una palabra por ejemplo si alguien escribe "la casa de juan" el programa imprimiria lo siguiente



la

casa

de

juan



ahora que es lo que pasa en el codigo que he hecho hasta ahora me imprime todo menos la ultima palabra es decir que me imprime



la

casa

de



y por mas vueltas que le doy al codigo no le consigo el error y espero que ustedes me ayuden a consegirlo este es el pseudocodigo que llevo hasta ahora





import java.io.*;

public class ejemplito {

     public static void main(String[] args)throws IOException {

     BufferedReader en = new BufferedReader(new InputStreamReader(System.in));

        String cad1,b;

             int p=0,x;



System.out.print("de una frase:");

System.out.flush();

cad1 = en.readLine();

for (x=0;x<cad1.length();x++) {

if (cad1.charAt(x) == ' ') {

b = cad1.substring(p,x);

System.out.println(b);

       p = x+1;

}

}

}

}



coolfrog

tu codigo esta bien solo que al final de una frase no hay un espacio, y en tu if busca un espacio por eso no te da la ultima palabra, si quieres probarlo para que te resulte aumentale un espacio al final de tu frase ej: "la casa de juan " en vez de "la casa de juan".
Una sugerencia para separar cadenas con un delimitador en particular mejor es usar la clase StringTokenizer.
Aqui modifique tu codigo :

import java.io.*;
import java.util.*;

public class separar {

public static void main(String[] args)throws IOException {
  BufferedReader en = new BufferedReader(new InputStreamReader(System.in));
  System.out.print("de una frase:");
  String cad1 = en.readLine();
  StringTokenizer b=new StringTokenizer(cad1," "); //el delimitador es el segundo parametro
  while (b.hasMoreTokens()) // recorre todas las palabras de la frase
   {
  System.out.println(b.nextToken());
   }
}
}

Saludos :)



darkxxx

verga pana te lo agradezco tienes razon no lo habia notado cuando al final de juan le coloco un espacio me lo impre bien a que se debe esto ?? ah y muchas gracias por ese otro codigo esta de pelos solo otra pregunta que es eso de "token" ??

pero gracias loco te lo agradezco cualquier cosa que necesites pidelo

coolfrog

Citar
verga pana te lo agradezco tienes razon no lo habia notado cuando al final de juan le coloco un espacio me lo impre bien a que se debe esto ?? ah y muchas gracias por ese otro codigo esta de pelos solo otra pregunta que es eso de "token" ??
De nada, si no colocas un espacio al final de tu string no entra nunca al tu condición por que el final de una cadena no lleva un espacio...
token en ingles significa señal, lee esto :

http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/colecciones/stringtokenizer.htm