Showing posts with label Bucles. Show all posts
Showing posts with label Bucles. Show all posts

Friday, October 16, 2009

LABELED & UNLABELED EN BUCLES

Un gran aporte que da Java 1.6 es el manejo de Labels por cada ‘For’ utilizado, estos Labels son etiquetas que están directamente relacionadas a cada ‘For’ y la gran ventaja que te da es la facilidad de poder hacer un Break or Continue de un ‘For’ anidado Hijo a Otro ‘For’ que esta como Padre. El manejo es de la siguiente forma:

public class Test{

//Descomentar el ejemplo que se quiera ejecutar.
public static void main( String… args ){
Test test = new Test();
test.forUnLabeled (); //Habilitar el 1er ejemplo.
//test.forLabeled (); //Habilitar el 2do ejemplo.
}

/**
* forUnLabeled se muestra un For anidado simple.
*/
public void forUnLabeled(){

String cadena = "Ricardo X Guerra";
String newCadena = "";

//Forzando un bucle infinito.
for( int i=0; i Character caracter_01 = (Character)cadena.charAt( i );
newCadena += caracter_01;

System.out.println( "'FOR' [PAPA]==>: " + caracter_01 );

if( caracter_01 == 'X' ){

for( int j=10; j>=0; j-- ){
System.out.println( "'FOR' [HIJO]==>: " + j );
}
}
}
}

/**
* forLabeled se muestra un For anidado con una Etiqueta (Labeled) en su interior que
* esta asignada un cada 'For', permitiendo con esto desde un 'For' hijo hacer
* un Break a un 'For' Padre.
*/
public void forLabeled(){

String cadena = "Ricardo X Guerra";
String newCadena = "";

TagForPapa: //Etiqueta del 1er 'For'
//Forzando un bucle infinito.
for( int i=0; i Character caracter_01 = (Character)cadena.charAt( i );
newCadena += caracter_01;

System.out.println( "'FOR' [PAPA]==>: " + caracter_01 );

if( caracter_01 == 'X' ){

TagForHijo: //Etiqueta del 2do 'For'
for( int j=5; j>=0; j-- ){
System.out.println( "'FOR' [HIJO]==>: " + j );
}

break TagForPapa; //Manda a parar el 1er 'For' desde el 2do 'For'.
}
}
}


MANEJO BUCLE 'FOR' COMO 'WHILE'.

Java te da la verdad muchas ventajas a comparación de otros lenguajes de programación, una de ella es el trabajar los bucles de distintas maneras una de ellas y de la que hablaré a continuación es sobre el manejo de un bucle For pero trabajado de una forma distinta a la comúnmente conocida ya que un For lo trabajar para iterar: cadenas, arrays, listas, etc pero siempre como un limitante en su interior peroahora vamos a ver una forma distinta de trabajar el For sin dicho limitante, un trabaja que normalmente esta destinado a un While o a un Do While. El manejo es de la siguiente manera:

public class Test{

//Descomentar el ejemplo que se quiera ejecutar.
public static void main( String… args ){
Test test = new Test();
test.forWhileIliminado(); //Habilitar el 1er ejemplo.
//test.forWhileLimitado(); //Habilitar el 2do ejemplo.
}

/**
* forWhileIliminado aqui se muestra el manejo de un FOR/WHILE Ilimitado, ya que dicho For iterará infinitamente, porque no tiene una confición de Stop en su interior.
*/
public void forWhileIliminado(){

int contador = 0;

//Forzando un bucle infinito.
for( ; ; ){

contador += 1;

System.out.println( "CONTANDO ... " + contador );
}
}

/**
* forWhileLimitado aqui se muestra el manejo de un FOR/WHILE limitado, ya que en dicho For estamos
* condicionando un toque que es '654321' y si se llega a ese numero el Bucle
* para ( break,System.exit( 0 ), return ) sino continua su recorrido infinito
* (continue) .
*/
public void forWhileLimitado(){

int contador = 0;

//Forzando un bucle infinito.
for( ; ; ){

contador += 1;

if( contador == 654321 ){
System.out.println( "EL 'CONTADO' LLEGO A SU [FIN] EN: " + contador + " ...!!! " );
break; //Parar el 'LOOP'.
//System.exit( 0 ); //Parar el 'LOOP'.
//return; //Parar el 'LOOP'.
}
else{
System.out.println( "CONTANDO ... " + contador );
continue; //Continuar el 'LOOP'.
}
}

}

}