|
|||||||
|
|
|
|||||
|
|
|||||||
Esta instrucción sirve para seleccionar una determinada instrucción, según un valor de entrada y tiene la forma :
switch(valor a evaluar)
{
case valor_cte_1 : instruccion_1 break;
case valor_cte_2 : instruccion_2 break;
:
:
case valor_cte_n : instuccion_n break;
default : instruccion por defecto
}
|
Ejemplo Se implementará un programa que realiza operaciones aritméticas básicas, ingresando por teclado, los operandos y el operador. Para evaluar la operación se programó una instrucción switch, en función del valor de una variable llamada opcion, con valores desde el 1 hasta el 5. Hay que hacer notar, que se hacen dos tipos de divisiones. La primera arroja un resultado entero y la segunda una real. Para obtener un resultado real producto de una división, uno de los operandos debe ser real, por lo tanto se procedió a una conversión explícita de tipo de dato. |
Codigo fuente
import java.io.*;
class ej_switch1
{
public static void main(String arg[ ]) throws IOException
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int a,b,opcion;
System.out.println("Calculadora");
System.out.println("-----------");
System.out.println("\nEste programa realiza operaciones \naritmeticas sobre a y b \n");
System.out.print("Ingrese a : ");
a = Integer.parseInt(in.readLine( ));
System.out.print("Ingrese b : ");
b = Integer.parseInt(in.readLine( ));
System.out.println("\nOpciones : ");
System.out.println("\t1.- suma");
System.out.println("\t2.- resta");
System.out.println("\t3.- multiplicacion");
System.out.println("\t4.- division entera ");
System.out.println("\t5.- division real");
System.out.print("\nIngrese opcion : ");
opcion = Integer.parseInt(in.readLine( ));
System.out.println( );
switch (opcion)
{
case 1 : System.out.println("resultado de a + b : " + (a + b) ); break;
case 2 : System.out.println("resultado de a - b : " + (a - b) ); break;
case 3 : System.out.println("resultado de a * b : " + (a * b) ); break;
case 4 : if (b != 0)
System.out.println("resultado de a / b : " + (a / b));
else
System.out.println("Error : division por cero");
break;
case 5 : if (b != 0)
{
/* para obtener resultado real, uno de los operandos debe
ser real, por lo tanto se realiza un conversion explicita
del primer operando. */
double r = (double) a / b;
System.out.println("resultado de a / b : " + r);
}
else
System.out.println("Error : division por cero"); break;
default : System.out.println("La opcion no corresponde");
}
}
}Bajar archivo
Ejemplo
A continuación se implementa un programa, que tiene la opción de calcular el seno, coseno o tangente de x. Ya que las funciones predeterminadas en el objeto Math requiere un angulo en terminos de radianes, se hace la conversión correspondiente y se muestra en pantalla.
import java.io.*;
class ej_switch2
{
public static void main(String arg[]) throws IOException
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
double ang_hex,ang_rad;
int opcion;
System.out.println("Calculo : coseno, seno y tangente");
System.out.println("---------------------------------");
System.out.println("\nIngrese un angulo hexadecimal entre -18.000 y 18.000 \n");
System.out.print("Ingrese angulo : ");
ang_hex = Double.parseDouble(in.readLine());
if( Math.abs(ang_hex) <= 18000.0 )
{
ang_rad = (Math.PI / 180.0) * ang_hex;
System.out.println("\nangulo en radianes : " + ang_rad);
System.out.println("\nOpciones : ");
System.out.println("\t1.- coseno");
System.out.println("\t2.- seno");
System.out.println("\t3.- tangente");
System.out.print("\nIngrese opcion : ");
opcion = Integer.parseInt(in.readLine());
System.out.println();
switch(opcion)
{
case 1 : System.out.println("cos("+ ang_hex + ") : " + Math.cos(ang_rad)); break;
case 2 : System.out.println("sin("+ ang_hex + ") : "+ Math.sin(ang_rad)); break;
case 3 : if (ang_hex != 90.0)
System.out.println("tan(" + ang_hex + ") : " + Math.tan(ang_rad));
else
System.out.println("tan(" + ang_hex + ") : tangente infinita");
break;
default : System.out.println("La opcion no corresponde");
}
}
else System.out.println("\nEl valor del angulo no corresponde.");
}
}
Bajar archivo
Salida a pantalla
