Free Web Site - Free Web Space and Site Hosting - Web Hosting - Internet Store and Ecommerce Solution Provider - High Speed Internet
Search the Web

Instrucción switch


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