Programacion en Java. Trabajando con bucles y saltos

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);

Acerca de Miguel Garcia

Programador, Desarrollador web, Formador en distintas areas de informatica y director de equipos multidisciplinares.
Esta entrada fue publicada en Formacion, Java y etiquetada , . Guarda el enlace permanente.

2 respuestas a Programacion en Java. Trabajando con bucles y saltos

  1. Pingback: Java - Un resumen organizado....o no.Recursos para formacion

  2. Pingback: Ejercicios java (5) - Bucles y saltosRecursos para formacion

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.