Escolar Documentos
Profissional Documentos
Cultura Documentos
Ejemplo 1: Tenemos un programita que te pide que ingreses un nmero entero del 1
al 12, y te devuelve el valor en el mes que le corresponde.
package Meses;
import java.util.Scanner;
public class Mes {
public void Mes(){
String mes = null;
Scanner ner = new Scanner (System.in);
System.out.println("Ingresar nmero entero del 1 al 12");
int numero = ner.nextInt();
numero = numero-1;
String arreglos2[] = new String[12];
arreglos2[0]= "Enero";
arreglos2[1]= "Febrero";
arreglos2[2]= "Marzo";
arreglos2[3]= "Abril";
arreglos2[4]= "Mayo";
arreglos2[5]= "Junio";
arreglos2[6]= "Julio";
arreglos2[7]= "Agosto";
arreglos2[8]= "Setiembre";
arreglos2[9]= "Octubre";
arreglos2[10]= "Noviembre";
arreglos2[11]= "Diciembre";
for(int j=0; j<arreglos2.length; j++){
if(numero ==j){
mes = arreglos2[j];
}
}
System.out.println("El nmero: "+(numero+1)+" para el mes: "+mes);
}
public static void main(String[] args) {
Mes mes = new Mes();
mes.Mes();
}
}
Aparentemente cuando ejecutamos el programa funciona con normalidad
Ingresamos un
entero
Ingresamos un
valor 0
Ingresamos
texto
Ingresamos
texto con
numero
Prueba
Esperado
Resultado
Enero
OK
0
hola
123dfg
Mensaje de
advertencia
Dato no
permitido
Dato no
permitido
null
Exception error
Exception error
Pero si vamos con el anlisis del cdigo interno, podremos observar que no
hay control sobre los errores, sea de nmeros decimales, letras o valores
nulos, por ende utilizamos la tcnica de prueba de caja blanca para
resolverlos.
Cdigo corregido:
package Meses;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class Mes {
public void Mes(){
//Controlamos errores con el TRY CATCH
try{
String mes = null;
//Para el ingreso del numero
Scanner ner = new Scanner (System.in);
System.out.println("Ingresar nmero entero del 1 al 12");
int numero = ner.nextInt();
//Creamos un arreglo con los meses del ao
String arreglos2[] = new String[12];
//Damos valores al arreglo
arreglos2[0]= "Enero";
arreglos2[1]= "Febrero";
arreglos2[2]= "Marzo";
arreglos2[3]= "Abril";
arreglos2[4]= "Mayo";
arreglos2[5]= "Junio";
arreglos2[6]= "Julio";
arreglos2[7]= "Agosto";
arreglos2[8]= "Setiembre";
arreglos2[9]= "Octubre";
arreglos2[10]= "Noviembre";
arreglos2[11]= "Diciembre";
//Este if es importante para controlar que solo se ingresen numeros
//comprendidos entre 1 al 12
if(numero >=1 && numero<=12){
numero = numero-1;
for(int j=0; j<arreglos2.length; j++){
if(numero == j){
mes = arreglos2[j];
}
}
System.out.println("El nmero: "+(numero+1)+" para el mes: "+mes);
}
//De lo contrario daremos el mensaje
else{
System.out.println("Procure ingresar slo nmero enteros en el rango del 1 al 12");
}
//El catch controla excepcin, en caso se ingresan letras, numeros decimales
}catch(Exception ex){
JOptionPane.showMessageDialog(null, "Error, procure ingresar solo nmeros enteros:
"+ex);
}
}
public static void main(String[] args) {
//Mostramos los datos, creando el objeto
Mes mes = new Mes();
mes.Mes();
}
}
Ahora corregido con la tcnica de caja blanca, volvemos al test para ver si encontramos errores.
Prueba
Esperado
Resultado
12
Diciembre
OK
Ingresamos un
entero
Ingresamos un
valor 0
Ingresamos
texto
Ingresamos
texto con
numero
0
hola
123dfg
Mensaje de
advertencia
Dato no
permitido
Dato no
permitido
OK
OK
OK
Ejemplo 2: creamos un programa y una clase para realizar la conexin con una base
de datos, desde Java a MySQL.
El programa aparentemente funciona con normalidad, realiza la conexin a la base de
datos correctamente, veamos cmo:
package Conectar;
import java.sql.*;
import javax.swing.JOptionPane;
public class Conectar {
static Connection conn = null;
static String us = "root";
static String paw = "david";
static String bd = "ciudades";
static String url = "jdbc:mysql://localhost/ciudades";
public static Connection conectar(Connection conn) throws SQLException,
ClassNotFoundException{
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url,us,paw);
return conn;
}
package Conectar;
import java.sql.*;
import javax.swing.JOptionPane;
public class Comectar2 {
//Creamos una variable conn, lo usaremos en el mtodo estatico ENLACE
static Connection conn=null;
//Estos atributos representan las credenciales de la base de datos
//Nombre de base de datos, tu contrasea, usuario y url.
static String bd="ciudades";
static String pw="david";
package Usuario;
public class Datos {
private String usuario;
private String password;
/**
* @return the usuario
*/
public String getUsuario() {
return usuario;
}
/**
* @param usuario the usuario to set
*/
public void setUsuario(String usuario) {
this.usuario = usuario;
}
/**
* @return the password
*/
public String getPassword() {
return password;
}
/**
* @param password the password to set
*/
public void setPassword(String password) {
this.password = password;
}
}