Para practicar la utilizacion de las instrucciones while y switch, propongo que me sigais en el siguiente ejercicio
Se trata de recoger una frase desde la linea de comando, y darle la vuelta. Para ello vamos a realizar distintas implementaciones.
Como buena clase que se precie empezara con
public class vuelta {
/**
* @param args
*/
public static void main(String[] args) {
Si nos entran una frase en linea de comando sin comillas, cada palabra de la frase, ira a parar a un argumento distinto, por lo que lo primero que tendremos que hacer es unirlas en una sola variable, creamos la variable entrada, y concatenamos todos los elementos del array args con una separacion de un espacio.
String entrada=»»;
int lg=args.length;
for(int a=0;a<lg;a++){
entrada+=args[a]+» «;
}
System.out.println(«fase-1-«+entrada);
Con la ultima instruccion, vemos como queda la variable; a continuacion, obtenemos la longitud y nos metemos en un bucle desde el final hasta o, para ir presentando cada uno de los caracteres
int longitud = entrada.length();
int a;
for(a=longitud-1;a>=0;a–)
System.out.print(entrada.charAt(a));
Objetivo conseguido.
La siguiente implementación hace lo mismo, pero va dejando los caracteres en una strig, volcandola al final. (Asumimos la ineficacia del sistema por trabajar con string, pero de momento, ya nos vale).
String salida=»»;
for(a=longitud-1;a>=0;a–)
salida+=entrada.charAt(a);
System.out.println(salida);
Lo hemos vuelto a hacer.
Para complicar un poco las cosas, os propongo que durante la inversion, cambies las vocales por números, utilizando switch
for(a=longitud-1;a>=0;a--) switch (entrada.charAt(a)){ case 'a': System.out.print(4); break; case 'e': System.out.print(3); break; case 'i': System.out.print(1); break; case 'o': System.out.print(0); break; case 'u': System.out.print(9); break; default: System.out.print(entrada.charAt(a)); } System.out.println();
Otra propuesta mas, Ahora se me ocurre que la cadena de entrada la podria recibir delimitada con cualquier caracter, y no vamos a utilizar el atributo length, si no que vamos a calcular la longitud, buscando el caracter del final. Para ello podemos hacer:
int longi = entrada.indexOf(entrada.charAt(0), 1); if (longi>0){ String entrada1=entrada.substring(1, longi); longi--; System.out.println(entrada1); System.out.println(longi); while (longi>0){ System.out.print(entrada1.charAt(longi-1)); longi--; } } else System.out.println("Cadena abierta");
Y nuestra ultima implementacion, basada en esta que acabamos de hacer, pero ahora vamos a trabajar sin calcular la longitud de la string
System.out.println(); x=1; cadena=""; while (entrada.charAt(x)!=entrada.charAt(0)){ cadena=entrada.charAt(x)+cadena; x++; } System.out.println("Sin contadores2-"+cadena);
8 comentarios