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:
edades[i] = leer.nextInt();
Mejor la vamos a pedir así:
edades[i] = Integer.parseInt(leer.nextLine());
Este podría ser un código para resolver lo que se pide:
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()
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.