Ayuda en Java para hacer un programa separe una cadena de caracteres (String) hasta el espacio

Bueno quería pedir un favor... Podrías ayudarme un poco es que tengo que hacer un programa en el que pida una cadena de caracteres (String) y de ahí me lo vaya separando hasta que haya un espacio. Encontré un código que hace más o menos lo que quiero la duda es como lo acoplo para que pida la frase y no se le de valor desde un principio le intente pidiéndolo pero solo me muestra la primera palabra por ejemplo si pongo "hola como estas" solo me muestra el "hola.. Como podría hacerle?...
 int j = 0;  
           String linea = "elemento1 elemento2 elemento3";  
           String [] campos = linea.split("\\s+");  
           while(j<campos.length){  
           System.out.println(campos[j]);  
           j++;  
            }
También otra duda... Tengo que hacer otro programa usando la función shift (algo así me dijo mi maestra) el cual tiene dos tipos a la derecha y la izquierda. Se tiene que pedir la cadena String y pedir el shifteo ya sea a la derecha o la izquierda y tiene que dar como resultado el ejemplo que viene abajo:
la frase: JUAN PEREZ
Le pongo shift derecha(recorrer 1espacio) --------> ZJUAN PERE
le pongo shift izquierda(recorrer 1espacio) -------> UNA PEREZJ
 "      "        "   derecha = 3 --------->  REZJUAN PE
"    "          "    izquierda = 3  ------->  N PEREZJUA
... (y así sucesivamente)...
Bueno espero me puedas ayudar te lo agradecería mucho. Saludos... Gracias :D

2 Respuestas

Respuesta
1
1) Lo que comentas va bien dirigido, para pedir datos por entrada, necesitas la clase Scanner. Si quieres que te dé de comer, te digo el código, si quieres aprender a pescar, busca en Google ejemplos. Te recomiendo la página www.koders.com.
2) Para lo segundo, puedes utilizar las clases de String de Java. No estoy muy puesto en ello, y lo que yo te digo es mejorable (y la profe seguramente te cosa a palos). Pero bueno, mi solución sería acceder a la última (o primera posición del array), almacenar ese dato en una variable char auxiliar, y hacer el swap entre la última y la primera. Te recomiendo que investigues las posibilidad de la clase String.
Una cosa, no doy soluciones, no me parece bien, porque os genera dependencia de mi, prefiero intentar haceros independientes a la hora de buscar soluciones.
¡No os vayáis a mal acostumbrar! ;)
HOla! Gracias por tu recomendación y si si se usar el Scanner y otras formas de leer desde el teclado solo que era lo que comentaba al momento de que ponía por ejemplo:
Scanner entrada=new Scanner (System.in);
String cadena= "";
System.out.println("Cadena: ");
cadena = entrada.next();
Al momento de poner el otro código que puse arriba para sepaar palabras ponía pr ejemplo hola como estas en toda la cadena y solo me imprimía hola y lo demás no.
Porque también incluso pensé en ir guardando la cadena en vector y de ahí con un charAt(int) accesar a ellos esa era más o menos mi idea que tenia...
Y yo entiendo que no te guste dar soluciones creo que como tu dices se hacen bastante dependientes pero no solo quería así que me dieran así como que la idea no el programa hecho... porque la noción la tengo solo que tiene ese error. Gracias por tu respuesta. Saludos
En ocasiones, es difícil dar soluciones individuales a todo el mundo (sería casi una dedicación exclusiva, además de no daros recursos para solucionar el problema).
En Java, si tienes buen inglés, es muy bueno dominar la JavaDoc. Te recomiendo que mires lo siguiente:
http://www.ensta.fr/~diam/java/online/jdk/150/api/java/util/Scanner.html
Creo que tu problema se solucionaría utilizando el método nextLine().
Suerte con ello.
Hola jaime aki es tardisimo en mexico jejeje...   y si entiendo que no se puede dar soluciones a todo mundo creo q tmbien hay que dejar que cada quien haga su parte y ya si en algo se atora porque no... y gracias por la pagina esta muy bien y muy completa aunq aaa todavia no sale  ni con NextLine() ni usando un codigo que haye, este:
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close();
Al acoplarlo con la cadena ingresada desde el teclado pero aa lo seguiré intentando jajaja porque no quiere quedar... GRacias por las respuestas. Saludos :D
Vas bien... sigue letendo sobre la clase Scanner, que lo lograrás.
Por favor, valora la respuesta (vivimos de ello) ;)
Respuesta
1
Dado que es un ejercicio para clase, no te voy a dar la respuesta mascada. Cúrratelo un poco y así de paso aprendes, que es de lo que se trata. En su lugar, te voy a dar unas pistas:
1) Para pedir la frase al usuario: Si estas programando en java sin ninguna clase de interfaz de usuario (awt, swing, etc) no te va a ser fácil pedir al usuario la frase. Si se trata de un ejercicio, hazte una función a la que le pases como parámetro la frase que quieres separar en palabras, algo así como "public void separaPalabras (String frase){...}" y dentro metes tu código. A ese método lo podrás invocar desde otra clase, o desde la misma clase. Si tu clase tiene un método main() para ser ejecutada desde la JVM, puedes llamar al método desde ahí, pasándole la frase.
2) Para separar las palabras: el código que tienes no está mal, pero usa " " como parámetro del método "split". Y sustituye el bucle por algo así:

for (int i=0; i<campos.length; i++){
    System.out.println(campos);
}

Hace lo mismo, pero es más elegante que ir incrementando el índice tú.
3) Función shift. Te la vas a tener que hacer tú. De verdad, intentalo:
public void shift(String frase, boolean izquierda, int posiciones){
  //TU CÓDIGO AQUÍ

}
Te recomiendo que empieces con el shift a derecha. Es más fácil de implementar. Un saludo:
Carlos
Hola que tal gracias por tu recomendación de que aprenda, en realidad si le se mover a java solo que me atore un poco en eso de ir separando ya cuando se ingresa desde el teclado y por eso pedía así como na sugerencia más no el programa hecho.
También acerca de lo del split intentar con " " el espacio le intente pero has de cuenta que al pedirla con Scanner solo me daba la primera palabra que le metía por ejemplo si le ponía en la frase "hola como estas: " solo me mostraba "hola lo otro no entonces estuve así intentando con varios pero no me daba igual incluso tenia otro programa pero era mucho más diferente era esta instrucción:
String nombre = "Adriana Juarez Rios";
        int pos_esp;
        pos_esp = nombre.indexOf(' ');
        String n1 = nombre.substring(0,pos_esp);
String apellido = nombre.substring((pos_esp + 1), nombre.lastIndexOf(' '));
String apellido2 = nombre.substring(nombre.lastIndexOf(' '), nombre.length());
Le intentare con la de sustituir el bucle creo que si eso le faltaba...
Bueno gracias por tu respuesta Saludos...
A mi este código me funciona:
java.io.BufferedReader d = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
System.out.println("Escribe una frase y pulsa ENTER\n");
String frase = d.readLine();
String[] palabras = frase.split(" ");
for (int i=0; i<palabras.length; i++){
    System.out.println(palabras);
}

Respecto al shift, de verdad, inténtalo tú, que es un buen ejercicio para controlar los bucles y los índices iterando sobre los caracteres de una palabra.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas