Enjoy A New Student Discount All 55,000 Courses on sale for Only $12.99

Ends in 05h 23m 49s

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

/*Si te ha gustado el artículo
no dudes en compartirlo*/

Facebook
Twitter
LinkedIn

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies

Ver mi IP

Ver ip de mi máquina
tipo valor
Ip: 44.223.31.148
Proxy: 44.223.31.148
Remote host: ec2-44-223-31-148.compute-1.amazonaws.com
Remote port: 62776
** 44.223.31.148