Foros del Web » Programación para mayores de 30 ;) » Java »

Me podrían decir qué está mal en este programa?

Estas en el tema de Me podrían decir qué está mal en este programa? en el foro de Java en Foros del Web. 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'' ...
  #1 (permalink)  
Antiguo 01/05/2012, 05:56
 
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.
  #2 (permalink)  
Antiguo 01/05/2012, 11:49
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 13 años, 7 meses
Puntos: 8
Respuesta: Me podrían decir qué está mal en este programa?

He seguido buscando errores y no he encontrado NADA... :S

MODIFICADO:

Olvidenlo, ya lo resolví. xD. El error estaba en que en el método toString de Empleado, puse un %d en vez de un %s.

Saludos.

Última edición por reethok; 01/05/2012 a las 12:09

Etiquetas: composicion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:03.