Supongamos que, una persona, desea realizar una división entre cero:
1 public class EjemploExcep{
2 public static void main (String args[]){
3 try{
4 double resul;
5
6 resul=27/0;
7 System.out.println("Resultado es: "+resul);
8 }//fin del try
9 catch (ArithmeticException e){
10 System.out.println("Java, lanza una excepción, ya que no puede realizar una división entre cero");
11 }
12 }
13 }
Todo lenguaje de programación cuenta (o al menos debería contar), con una serie de iunstrucciones que, le permitan controlar el flujo de ejecución de las instrucciones. Afortunadamente Java posee dos grandes rubros de dichas sentencias:
àEstructuras Selectivas, en las cuales encontramos el if, elseif y switch.
àEstructuras Repetitivas o Cilclos, entre las cuales están: while, do… while y for.
Estructuras Selectivas
En la vida, muchas veces, nos toca elegir entre un camino y otro a seguir. En muchas de las actividades que realizamos día con día, nos enfrentamos a decisiones que debemos tomar y que, de una u otra forma, alteran el cause normal de nuestra vida (o de nuestro programa).
Sentencia if
La sentencia if (o si condicional), le permite a un programa decidir, mediante la evaluación de una condición, ejecutar una u otra acción o acciones.
La sintaxis General es La siguiente:
if(condicion1)
Accion1;
En donde:
Condición 1: Representa una expresión que puede ser del tipo booleana.
Acción 1: es la acción que, al evaluar la condición como verdadera, se ejecutará.
Si son varias acciones, van entre llaves.
Ejemplo
Diseñe un programa en Java, que calcule, los descuentos a un trabajador, sabiendo que, son aplicables, un 6.25% del salario en LPH, sólo si éste es superior a 300; Además que, si es un trabajador hombre, se le descuenta, aparte del LPH, el 3% sobre el sueldo en concepto de SSO y 10% en concepto de Renta.
1 import javax.swing.*;
2 class Descuentos{
3 public static void main (String args []) {
4 String datos;
5 int sexo;
6 double sueldo, afp=0, isss, totalre, nsueldo, renta;
7 datos=JOptionPane.showInputDialog("Ingrese el sueldo del empleado (a)");
8 sueldo=Double.parseDouble(datos);
9 if(sueldo>300)//Preuntamos si el sueldo es mayor a 300
10 afp=sueldo*0.0625;// si es mayor, aplicamos descuento
11 JOptionPane.showMessageDialog(null, "Este empleado tiene un sueldo de: "+sueldo+" y El descuento del AFP es: "+afp);
12 datos=JOptionPane.showInputDialog("Ingrese el Sexo: \nSi es Masculino (1)\nSi es Femenino (2)");
13 sexo=Integer.parseInt(datos);
14 if(sexo==1)//Si es de sexo masculino
15 {
16 isss=sueldo*0.03;//aplicamos las otras retenciones
17 renta=sueldo*0.10;
18 totalre=afp+isss+renta;
19 nsueldo=sueldo-totalre;
20 JOptionPane.showMessageDialog(null, "A este empleado, se le retiene: "+isss+" En concepto de ISSS\nAdemás Se le retiene: "+renta+" En Concepto de Renta\nLo que hace un total de: "+totalre+"\nY su nuevo sueldo es: "+nsueldo);
21 }//del if
22
23 }//del main
24 }// de la clase
En las sentencias if, podemos agregar la sentencia else, la cual indica que, si al evaluar la condición, ésta es falsa, entonces, realizará las acciones, que estén después del else. La sintaxis es la siguiente:
if(condición1)
{
Acciones;
}
else
{
Condiciones;
}
Ejemplo 2
Al ingresar la nota de un alumno, se desea saber si éste aprobó o no, una materia en el colegio. Se sabe que para aprobar, se necesita una nota mayor o igual a 7.0. Diseñe una aplicación en Java que, al ingresar la nota, muestre con un mensaje, si el alumno, aprobó o no. Además se sabe que si la nota está entre 6.50 y 6.99, tiene la posibilidad de realizar un examen de suficiencia para aprobar.
1 import javax.swing.*;
2 public class NotaAlum{
3 public static void main (String args []){
4 String leer;
5 double Nota;
6 leer=JOptionPane.showInputDialog("Ingrese la nota del alumno");
7 Nota=Double.parseDouble(leer);
8 if(Nota>=7.0)
9 JOptionPane.showMessageDialog(null, "El alumno APROBÓ!!!!!!");
10 else
11 {
12 JOptionPane.showMessageDialog(null, "El alumno reprobó");
13 if(Nota>=6.5 && Nota<=6.99)
14 JOptionPane.showMessageDialog(null, "Pero tiene la posibilidad de realizar el examen de suficiencia");
15 }//del else
16 }//del main
17 }//de la clase
Explicación:
En la línea 13, colocamos una condición compuesta, es decir que, si el alumno alcanza una nota mayor o igual a 6.5, pero menor a 7.0 (es decir 6.99), tiene la posibilidad de realizar el examen.
Note además que, una estructura, puede estar dentro de otra, lo que llamamos Anidamiento, para el caso, el if de la línea 13, está dentro del else, que inicia en la línea 10.
Sentencia elseif
Esta estructura, es una consecuencia cde las estructuras if anidadas, sus formato es el siguiente:
if(condicion1)
Sentencia 1;
elseif(condicion2)
Sentencia 2;
elseif(condicion3)
Sentencia 3;
...
else
Sentencia n;
Funciona de la siguiente manera:
Se evalúa la primera condición, si resulta verdadera se ejecuta la sentencia 1, y se continúa con la ejecución del programa; de lo contrario, de evalúa la condición 2, si resulta verdadera, se ejecuta la sentencia 2, de lo contrario se evalúa la condición 3 y así sucesivamente. Si al evaluar todas las condiciones, ninguna resulta verdadera, se ejecuta el bloque del else.
Sentencia switch
Esta sentencia, permite ejecutar, una u otra u otra acción, al evaluar una condición, cuyo resultado es el que indica que bloque (o bloques) de instrucciones se van a ejecutar.
Su sintaxis es la siguiente:
switch(expresión)
{
case 1:
Sentecia 1;
break;
case 2:
Sentecia 2;
break;
. . .
default:
Sentencias;
break;
}
En donde, expresión es una condición que, al evaluarla, nos indicará que camino debemos seguir. Además ésta puede ser, una expresión entera char, byte, int y short. Además que, la expresión constante que acompaña a la palabra reservada case debe ser del mismo tipo que expresión. La cláusula default es opcional y puede omitirse en los programas que desarrollemos.
Ejemplo 3
En una tienda, se realizan diferentes descuentos, a sus clientes al momento de cancelar en caja. Ya que, cuando se disponen a cancelar tienen la oportunidad de sacar una bolita, y dependiendo del color de la misma, se le aplica su respectivo descuento. Si la bolita es roja, se le aplica un 10% de descuento sobre la compra; si la bola es verde, se le aplica un 5% de descuento, y si la bolita es blanca, no se le aplica descuento alguno. Diseñe una aplicación que de soporte a ésta actividad en el súper mercado.
1 import javax. swing.*;
2 public class SuperMercado
3 {
4 public static void main (String args [])
5 {
6 String aux;
7 int bolita;
8 double compra, descuento=0, monto;
9 //leemos el import de la compra
10 aux=JOptionPane.showInputDialog("Ingrese el importe de la compra: ");
11 compra=Double.parseDouble(aux);
12 //leemos el color de la bolita
13 aux=JOptionPane.showInputDialog("Ingrese el color de la Bolita:\nSi es Roja, ingrese 1\nSi fue Verde, Ingrese 2\nSi fue Blanca, ingrese 3");
14 bolita=Integer.parseInt(aux);
15 switch(bolita)
16 {
17 case 1:
18 {
19 descuento=compra*.10;
20 monto=compra-descuento;
21
22 }
23 break;
24 case 2:
25 {
26 descuento=compra*.05;
27 monto=compra-descuento;
28
29 }
30 break;
31 case 3:
32 monto=compra;
33 break;
34 default:
35 monto=compra;
36 break;
37 }//del switch
38 JOptionPane.showMessageDialog(null, "El cliente había consumido: "+compra+" Pero sacó una bolita color: "+bolita+"\nPor lo que se aplicó un descuento de: "+descuento+"\nAhora el saldo a cancelar es: "+monto);
39 }//del main
40 }// de la clase