Autor Tema: Aquí utilizamos un "int, String y char" alguien me da una mano.  (Leído 117 veces)

EdwarRestrepo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Crear un programa que solicite a 5 usuarios ingresar la siguiente
información:

• Nombre
• Edad
• Sexo

El programa deberá mostrar la siguiente información:

• El listado general de las personas registradas con todos sus datos
• La cantidad de hombres mayores de edad registrados
• La cantidad de hombres menores de edad registrados
• La cantidad de mujeres mayores de edad registradas
• La cantidad de mujeres menores de edad registradas.


Código: [Seleccionar]
Scanner lea = new Scanner (System.in);
       
     
        String nombre = lea.nextLine();
        for (int i = 0; i < usuarios.length; i++) {
            System.out.print("Ingrese su nombre: " + (i+1) + " : ");
            usuarios[i] = nombre();
           

        System.out.println("Ingresa tu sexo (H-hombre y M-mujer)");
        char sexo = lea.next().charAt(0);
       
        System.out.println("Ingresa tu edad: ");
        int edad = lea.nextInt();
       
        if (sexo=='h'){
            System.out.println("Eres hombre");
        }
        else if (sexo=='m'){
            System.out.println("Eres mujer");
        }
       
        if (edad>=18){
            System.out.println("Eres mayor de edad");
        }
        else {
            System.out.println("Eres menor de edad");
        }
 

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 702
    • Ver Perfil
Re: Aquí utilizamos un "int, String y char" alguien me da una mano.
« Respuesta #1 en: 30 de Agosto 2021, 19:53 »
En este caso se necesitarán tres arreglos: uno de String para los nombres, otro para el sexo que puede ser char (también podría ser String) y un int para las edades.

Habrá que pedir estos datos a 5 usuarios y repartirlos en el arreglo que corresponda.
Según se piden los datos, se pueden computar para ir contando los hombres y mujeres que son menores y mayores de edad.

Una vez se tienen todos los datos, iniciamos un nuevo bucle para mostrar los datos registrados, de forma que cada nombre salga acompañado de su sexo y de edad.
Y luego se muestran los contadores.

Aquí hay algo con lo que tener cuidado.
Cuando en un ejercicio vamos a pedir datos numéricos y también tipo String, es mejor usar nextLine() para hacer TODAS las lecturas.
De lo contrario, tendremos problemas 100% seguro.

nextLine() nos da un String. Cuando necesitemos un dato int, podemos convertirlo haciendo un parseo.

Es decir, en lugar de pedir así la edad:
Código: [Seleccionar]
edades[i] = leer.nextInt();Mejor la vamos a pedir así:
Código: [Seleccionar]
edades[i] = Integer.parseInt(leer.nextLine());
Este podría ser un código para resolver lo que se pide:
Código: [Seleccionar]
    public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        //Arreglos para guardar los datos
        String[] nombres = new String[5];
        char[] sexos = new char[5];
        int[] edades = new int[5];
        //Contadores
        int contHombreMayor = 0, contHombreMenor = 0;
        int contMujerMayor = 0, contMujerMenor = 0;
       
        //Petición de datos
        for (int i = 0; i < 5; i++) {
            System.out.println("\nDatos usuario #" + (i+1));
            System.out.print("Nombre: ");
            nombres[i] = leer.nextLine();
            System.out.print("Sexo (H-Hombre / M-Mujer: ");
            sexos[i] = leer.nextLine().toUpperCase().charAt(0);
            System.out.print("Edad: ");
            edades[i] = Integer.parseInt(leer.nextLine());
           
            //Computamos Contadores
            if (sexos[i] == 'H') {
                if (edades[i]>=18)
                    contHombreMayor++;
                else
                    contHombreMenor++;
            }
            else {
                if (edades[i]>=18)
                    contMujerMayor++;
                else
                    contMujerMenor++;
            }
        }
       
        //Datos registrados y computados. Mostramos resultados
        System.out.println("\n\n\tDATOS REGISTRADOS");
        System.out.println("\t----- -----------");
        for (int i = 0; i < 5; i++) {
            System.out.print("- " + nombres[i] + "  --  ");
            System.out.print(sexos[i]=='H'?"Hombre":"Mujer");
            System.out.println(" -- " + edades[i]);
        }
       
        System.out.println("\nHombres mayores de edad: " + contHombreMayor);
        System.out.println("Hombres menores de edad: " + contHombreMenor);
        System.out.println("Mujeres mayores de edad: " + contMujerMayor);
        System.out.println("Mujeres menores de edad: " + contMujerMenor);
    }

Revísalo y asegúrate de que lo entiendes todo.
Si algo se te escapa, solo tienes que preguntarlo.

Cuando lo tengas claro, si quieres, experimenta haciendo la petición de la edad con nextInt()

Código: [Seleccionar]
            System.out.print("Edad: ");
            edades[i] = leer.nextInt();

Verás como tras introducir la primera edad, no podrás introducir el siguiente nombre y directamente saltará a la petición del sexo.

Esto siempre ocurre cuando se piden datos de distinto tipo.
Lo mejor para evitarlo es pedirlo todo con nextLine(), y ya luego convertir al tipo de dato que se pueda necesitar.

Un saludo.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".