es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Java Fecha de nacimiento Entrada y Salida

Estoy tratando de usar el método Scanner para permitirme ingresar una fecha de nacimiento en este formato – mm/dd/aa
y la salida que me gustaría obtener sería algo como esto.

Entrada - 02/06/12
Salida - 6 de febrero de 2012

También estoy tratando de limitar el valor para el día (dd) y asegurarme de que no supere los 32, y el valor para el año (aa) para no exceder el 2022. Asumo que guardo la entrada como un String, sin embargo, no estoy seguro de cómo separarlos y tener una condición donde pueda asignar ciertos valores de cadena a cada mes.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener el resultado deseado, puedes utilizar el siguiente fragmento de código:

    import java.util.Scanner;
    
    public class FechaDeNacimiento {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
    
            // Pedir al usuario la fecha de nacimiento en el formato mm/dd/aa
            System.out.print("Ingresa la fecha de nacimiento (mm/dd/aa): ");
            String input = scanner.nextLine();
    
            // Validar la entrada y extraer el día, mes y año
            String[] partes = input.split("/");
            int mes = Integer.parseInt(partes[0]);
            int dia = Integer.parseInt(partes[1]);
            int año = Integer.parseInt(partes[2]);
    
            if (mes < 1 || mes > 12 || dia < 1 || dia > 31 || año > 2022) {
                System.out.println("Fecha de nacimiento inválida");
            } else {
                // Asignar el nombre del mes según el valor del mes
                String nombreMes;
                switch (mes) {
                    case 1:
                        nombreMes = "Enero";
                        break;
                    case 2:
                        nombreMes = "Febrero";
                        break;
                    case 3:
                        nombreMes = "Marzo";
                        break;
                    case 4:
                        nombreMes = "Abril";
                        break;
                    case 5:
                        nombreMes = "Mayo";
                        break;
                    case 6:
                        nombreMes = "Junio";
                        break;
                    case 7:
                        nombreMes = "Julio";
                        break;
                    case 8:
                        nombreMes = "Agosto";
                        break;
                    case 9:
                        nombreMes = "Septiembre";
                        break;
                    case 10:
                        nombreMes = "Octubre";
                        break;
                    case 11:
                        nombreMes = "Noviembre";
                        break;
                    default:
                        nombreMes = "Diciembre";
                        break;
                }
    
                // Imprimir la fecha de nacimiento formateada
                System.out.printf("%s %d, %d", nombreMes, dia, 2000 + año);
            }
    
            scanner.close();
        }
    }
    

    Este código primero solicita al usuario que ingrese una fecha de nacimiento en el formato especificado y lee la entrada utilizando un objeto Scanner. Luego, valida la entrada para asegurarse de que los valores del mes, día y año estén dentro del rango deseado. La cadena de entrada se divide en tres partes utilizando el método split(), y cada parte se convierte en un entero utilizando el método parseInt().

    Luego, el código utiliza una instrucción switch para asignar el nombre del mes correspondiente según el valor del mes. Por último, se imprime la fecha de nacimiento formateada utilizando el método printf().

    Ten en cuenta que se asume que el valor del año está en el rango 00-99 y que representa un año en el siglo XXI (es decir, 2000 + año). Puedes modificar esto según sea necesario.

Comments are closed.