Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/05/2012, 05:56
reethok
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 13 años, 7 meses
Puntos: 8
Pregunta Me podrían decir qué está mal en este programa?

Lo que pasa es que venía como ejemplo de composición en mi libro, pero al ejecutarlo me da el siguiente error:

"Exception in tread ''main'' java.util.IllegalFormatConversionException: d != Fecha...

Los códigos fuente son:

Fecha.java

Código Java:
Ver original
  1. public class Fecha
  2. {
  3.     private int mes;
  4.     private int dia;
  5.     private int anio;
  6.    
  7.     public Fecha(int elMes, int elDia, int elAnio)
  8.     {
  9.         mes = comprobarMes(elMes);
  10.         anio = elAnio;
  11.         dia = comprobarDia(elDia);
  12.        
  13.         System.out.printf(
  14.             "Constructor de objeto Fecha para la fecha %s\n", this);
  15.     }
  16.    
  17.     private int comprobarMes(int mesPrueba)
  18.     {
  19.         if(mesPrueba > 0 && mesPrueba <= 12)
  20.             return mesPrueba;
  21.         else
  22.         {
  23.             System.out.printf(
  24.                 "Mes invalido (%d) se establecio en 1.", mesPrueba);
  25.             return 1;
  26.         }
  27.     }
  28.    
  29.     private int comprobarDia(int diaPrueba)
  30.     {
  31.         int diaPorMes[] =
  32.             {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  33.            
  34.             if(diaPrueba > 0 && diaPrueba <= diaPorMes[mes])
  35.                 return diaPrueba;
  36.             // Año bisiesto.
  37.             if(mes == 2 && diaPrueba == 29 && (anio % 400 == 0 || (anio % 4 == 0 && anio % 100 != 0)))
  38.                 return diaPrueba;
  39.            
  40.             System.out.printf("Dia invalido (%d) se esyablece en 1.", diaPrueba);
  41.             return 1;
  42.     }
  43.    
  44.     public String toString()
  45.     {
  46.         return String.format("%d/%d/%d", dia, mes, anio);
  47.     }
  48. }

Empleado.java

Código Java:
Ver original
  1. public class Empleado
  2. {
  3.     private String primerNombre;
  4.     private String apellidoPaterno;
  5.     private Fecha fechaNacimiento;
  6.     private Fecha fechaContratacion;
  7.    
  8.     public Empleado(String nombre, String apellido, Fecha fechaDeNacimiento, Fecha fechaDeContratacion)
  9.     {
  10.         primerNombre = nombre;
  11.         apellidoPaterno = apellido;
  12.         fechaNacimiento = fechaDeNacimiento;
  13.         fechaContratacion = fechaDeContratacion;
  14.     }
  15.    
  16.     public String toString()
  17.     {
  18.         return String.format("%s, %s Contratado: %d Cumpleanios: %s",
  19.             apellidoPaterno, primerNombre, fechaContratacion, fechaNacimiento);
  20.     }
  21. }

Y PruebaEmpleado.java (aquí está main)

Código Java:
Ver original
  1. public class PruebaEmpleado
  2. {
  3.     public static void main(String args[])
  4.     {
  5.         Fecha nacimiento = new Fecha(7, 24, 1949);
  6.         Fecha contratacion = new Fecha(3, 12, 1988);
  7.         Empleado empleado = new Empleado("Daniel", "Perez", nacimiento, contratacion);
  8.        
  9.         System.out.println(empleado);
  10.     }
  11.    
  12. }

Me podrían decir qué está mal? Por favor... no entiendo por qué da error. Muchas gracias de antemano.