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

[SOLUCIONADO] Duda sobre compara meses

Estas en el tema de Duda sobre compara meses en el foro de Java en Foros del Web. Hola amigos disculpen las molestias pero tengo una duda, bueno tengo que crear un constructor que reciba el dia,mes y año, el dia y año ...
  #1 (permalink)  
Antiguo 04/10/2013, 12:00
Avatar de ninga  
Fecha de Ingreso: diciembre-2011
Ubicación: Mexico
Mensajes: 19
Antigüedad: 12 años, 4 meses
Puntos: 0
Pregunta Duda sobre compara meses

Hola amigos disculpen las molestias pero tengo una duda, bueno tengo que crear un constructor que reciba el dia,mes y año, el dia y año son enteros, pero el mes tiene que recibir una cadena, pero lo que no entiendo es como hacer que el usuario no pueda meter mas que los nombres de los meses y no otra cosa?, esto es lo que llevo:

Código Java:
Ver original
  1. public class CFecha {
  2.     //Atributos
  3.  
  4.     private int dia, mes, anio;
  5.     private String nmes;
  6.  
  7.     /**
  8.      * Contructor por omision
  9.      * <br>Contructor que permite definir una fecha valida
  10.      */
  11.     public CFecha() {
  12.         dia = 1;
  13.         mes = 1;
  14.         anio = 1900;
  15.     }
  16.  
  17.     /**
  18.      * Contructor que recibe parametros
  19.      * <br>Permite definir una fecha a partir de enteros
  20.      *
  21.      * @param dia - Recibe un entero como dia de una fecha
  22.      * @param mes - Rebice un enterro como mes de una fecha
  23.      * @param anio - Recibe un entero como año de una fecha
  24.      */
  25.     public CFecha(int d, int m, int a) {
  26.         if (esAnioBisiesto(a) && m == 2 && (d < 1 || d > 29)) {
  27.             System.out.println("Dia invalido para \"Febrero\" ya que es un a\u00f1o");
  28.             System.exit(0);
  29.         }
  30.         if (m == 2 && (d < 1 || d > 28)) {
  31.             System.out.println("Dia invalido para febrero");
  32.             System.exit(0);
  33.         }
  34.         if (d < 0 || d > 31) {
  35.             System.out.println("Dia invalido no se creo la fecha");
  36.             System.exit(0);
  37.         }
  38.         if (a < 1800 || a > 3000) {
  39.             System.out.println("A\u00f1o invalido");
  40.             System.exit(0);
  41.         }
  42.         if (m > 12 || m < 1) {
  43.             System.out.println("Mes invalido");
  44.             System.exit(0);
  45.         }
  46.         dia = d;
  47.         mes = m;
  48.         anio = a;
  49.     }
  50.     /**
  51.      * Contructor que recibe parametros
  52.      * <br>Permite definir una fecha a partir de enteros y una cadena para el
  53.      * nombre del mes
  54.      *
  55.      * @param dia - Recibe un entero como dia de una fecha
  56.      * @param nmes - Recibe una cadena como mes de una fecha
  57.      * @param anio - Recibe un entero como año de una fecha
  58.      */
  59.     public CFecha(int d,String m,int a){
  60.          if (esAnioBisiesto(a) && m.equals("Febrero") && (d < 1 || d > 29)) {
  61.             System.out.println("Dia invalido para \"Febrero\" ya que es un a\u00f1o");
  62.             System.exit(0);
  63.         }
  64.         if (m.equals("Febrero") && (d < 1 || d > 28)) {
  65.             System.out.println("Dia invalido para febrero");
  66.             System.exit(0);
  67.         }
  68.         if (d < 0 || d > 31) {
  69.             System.out.println("Dia invalido no se creo la fecha");
  70.             System.exit(0);
  71.         }
  72.         if (a < 1800 || a > 3000) {
  73.             System.out.println("A\u00f1o invalido");
  74.             System.exit(0);
  75.         }
  76.         if (m > "Diciembre" || m < "Enero") {
  77.             System.out.println("Mes invalido");
  78.             System.exit(0);
  79.         }
  80.         dia = d;
  81.         nmes = m;
  82.         anio = a;
  83.     }
  84. }

Si me ayudan se los agradecere
  #2 (permalink)  
Antiguo 05/10/2013, 12:12
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Duda sobre compara meses

Desde el momento que das al usuario acceso a un teclado, es imposible que te asegures de que el usuario teclee lo que tú quieres.

Lo único que puedes hacer es programar teniendo en cuenta esto, de forma que todas las posibilidades estén previstas.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 05/10/2013, 13:26
Avatar de ninga  
Fecha de Ingreso: diciembre-2011
Ubicación: Mexico
Mensajes: 19
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Duda sobre compara meses

Cita:
Iniciado por Xerelo Ver Mensaje
Desde el momento que das al usuario acceso a un teclado, es imposible que te asegures de que el usuario teclee lo que tú quieres.

Lo único que puedes hacer es programar teniendo en cuenta esto, de forma que todas las posibilidades estén previstas.
¬¬ Uno programa con fe en el usuario, por eso tu programa debe de ser robusto si da algo mal se de dice que no es valido y que lo meta de nuevo y/o se para el programa.

Y ya encontré la solución por mi mismo n.n

Etiquetas: cadena, meses, nombre, string
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 17:29.