Sería interesante que mostrases aquí el código que hayas escrito, por muy incompleto y/o erróneo que pueda ser, para poder indicarte donde te equivocas y cómo corregirlo.
Además nos sirve para dar una idea de en que punto de aprendizaje te encuentras, para así resolverlo de una manera o de otra.
Por ejemplo, supongo que aún no has llegado a Programación Orientada a Objetos, por lo que crear una clase Alumno quedaría descartado.
Por el enunciado supongo que lo que se pretende es practicar operaciones con arrays y matrices.
El programa debería pedir datos para registrar 5 alumnos.
Nombres de alumno y materias se podrían guardar en arrays separados con longitud 5 (ya que son 5 alumnos) y de tipo String.
Aunque luego de todos modos no se va a hacer casi nada con estos datos.
Por cada alumno se piden 2 notas y con ellas se hace el calcula de una tercera nota.
Así que cada alumno tiene 3 notas. Estas notas se pueden guardar en una matriz de 5 x 3.
Es en esta matriz donde se harán todas las operaciones que pide el enunciado.
Empieza por crear esta parte del programa. Registro de 5 alumnos, nombre, materia y 2 notas para calcular la tercera.
Y guardarlo todo correctamente en arrays y matriz
Una vez tengas esto, se mostraría al usuario un menú de 4 opciones.
Se le pide al usuario que elija opción y según lo que pida se llama a la función/método correspondiente que se encargará de hacer lo que se pida.
Habrá una función para:
- calcular Nota Promedio mas alta.
- mostrar las tres notas más bajas
- ordenar las Notas 1 de mayor a menor.
Cada función es independiente y tiene que encargarse únicamente de su cometido.
Te propongo aquí una solución en base a esto. Siempre será mejor que intentes resolverlo tú, aunque no lo consigas e ir preguntando como avanzar cuando te atasques.
Pero puedes ayudarte mirando mi código.
Si algo no lo entiendes, solo tienes que preguntarlo.
Pego aquí el código.
//https://aprenderaprogramar.com/foros/index.php?topic=7374.msg26903#new
package registrarAlumnos;
import java.util.Scanner;
public class Registros {
/*Variables principales*/
//Nombre de los alumnos
static String[] nombres = new String[5];
//Materias que cursan los alumnos
static String[] materias = new String[5];
//Matriz con las 3 notas de los 5 alumnos
static double[][] notas = new double[5][3];
/*Método main*/
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
//Registramos 5 alumnos
for (int i = 0; i < 5; i++) {
System.out.println("Registrando alumno #" + (i+1));
System.out.print("Nombre: ");
nombres[i] = teclado.nextLine();
System.out.print("Materia: ");
materias[i] = teclado.nextLine();
System.out.print("Nota 1: ");
notas[i][0] = Double.parseDouble(teclado.nextLine());
System.out.print("Nota 2: ");
notas[i][1] = Double.parseDouble(teclado.nextLine());
//La Nota 3 se autocalcula según formula.
notas[i][2] = (((((notas[i][0]+notas[i][1])/2)+0.5))*2)/2;
System.out.println("Valor autocalculado para Nota 3: " + notas[i][2]);
System.out.println("Alumno registrado...\n");
}
//Finalizado registro, abrimos menú de opciones
int opcion = 0;
do {
System.out.println("\n\n\t\tMENU OPCIONES\n");
System.out.println("[1] Mostrar nota promedio más alta.");
System.out.println("[2] Mostrar las 3 notas más bajas.");
System.out.println("[3] Ordenar de mayor a menor Nota 1.");
System.out.println("[4] SALIR.");
System.out.print("Elija opcion: ");
opcion = Integer.parseInt(teclado.nextLine());
switch(opcion) {
case 1:
notaPromedioMasAlta();
break;
case 2:
tresNotasMasBajas();
break;
case 3:
ordenaNota1();
break;
case 4:
System.out.println("\n\t\tFIN DE PROGRAMA");
break;
default:
System.out.println("\nOpcion equivocada. Escoja entre [1-4]");
}
}while(opcion != 4);
teclado.close();
}
/*Métodos para funciones del menú*/
private static void notaPromedioMasAlta() {
/*
* Calculamos el promedio de cada Alumno
* y nos quedaremos con la más alta.
*/
double masAlta = 0;
int alumno = 0;
for (int i = 0; i < notas.length; i++) {
double sumaNotas = notas[i][0] + notas[i][1] + notas[i][2];
double promedio = sumaNotas / 3;
if (promedio > masAlta) {
masAlta = promedio;
alumno = i;
}
}
System.out.printf("\nNota promedio más alta: %.2f\n", masAlta);
System.out.println("Alumno: " + nombres[alumno]);
}
private static void tresNotasMasBajas() {
/*
* Una forma de obtener las tres notas más bajas
* sería construir un array unidimensional con todas
* las notas, ordenarlo de menor a mayor, y mostrar
* las tres primeras tras haber ordenado.
*/
//Construimos array con todas las notas
double[] todasNotas = new double[15]; //5 alumnos, 3 notas: 5x3 = 15 notas
int z = 0; //Indice para el array unidimenional
for (int i = 0; i < notas.length; i++)
for (int j = 0; j < notas[0].length; j++) {
todasNotas[z] = notas[i][j];
z++;
}
//Array construido, ordenamos de menor a mayor
for (int i = 0; i < todasNotas.length -1; i++) {
for (int j = 0; j < todasNotas.length-i-1; j++) {
if (todasNotas[j + 1] < todasNotas[j]) {
double aux = todasNotas[j + 1];
todasNotas[j + 1] = todasNotas[j];
todasNotas[j] = aux;
}
}
}
//Array ordenado, mostramos los tres primeros
System.out.println("\nLas tres notas más bajas son:");
for (int i = 0; i < 3; i++) {
System.out.println("- " + todasNotas[i]);
}
}
private static void ordenaNota1() {
/*
* Construimos array solo con notas 1
* y ordenamos de mayor a menor
*/
double[] notas1 = new double[5];
for (int i = 0; i < 5; i++)
notas1[i] = notas[i][0];
//Ordenamos
for (int i = 0; i < notas1.length -1; i++) {
for (int j = 0; j < notas1.length-i-1; j++) {
if (notas1[j + 1] > notas1[j]) {
double aux = notas1[j + 1];
notas1[j + 1] = notas1[j];
notas1[j] = aux;
}
}
}
//Mostramos
System.out.println("\nNotas 1 de MAYOR a MENOR:");
for (int i = 0; i < 5; i++)
System.out.print(notas1[i] + " ");
}
}