Hola que tal buenas, primero que nada veo bien el codigo que tienes, y en cuanto al error parece que lo
identifico, sin embargo sera mejor irnos por partes, antes que nada te aconcejo que en tus clases modelo
trabajes con los metodos de asignacion, como lo son los metodos Set and Get, esto para que tengas una idea
mas clara de lo que quieres realizar, especialmente por que al estar introduciendote a la programacion
orientada a objetos, el definir estos metodos puede servirte de mucho, el getter o Get es un metodo para
recuperar el dato de una propiedad de tu objeto, y el set es para establecer un valor a una propiedad de tu
objeto, dicho esto tu clase resultante alumno, quedaria de la siguiente manera.
public class Alumno {
private String name;
private int edad;
private float calif;
//Metodo para obtener el valor de la propiedad name
public String Getname(){
return name;
}
//Metodo para establecer el valor a la propiedad name
public void Setname(String name){
this.name=name;
}
//Metodo para obtener el valor de la propiedad edad
public int Getedad(){
return edad;
}
//Metodo para establecer el valor a la propiedad edad
public void Setname(int edad){
this.edad=edad;
}
//Metodo para obtener el valor de la propiedad calif
public float Getcalif(){
return calif;
}
//Metodo para establecer el valor a la propiedad calif
public void Setname(float calif){
this.calif=calif;
}
}
A la mejor y te alarmes por que son muchas lineas de codigo, pero descuida el IDE que utilices debera contar
con erramientas que te permitan crear el codig de etos metodos instantaneamente.
En cuanto a tus clase donde tienes almacenado tus metodos que necesitas, se le realizarian las modificaciones
necesarias para adaptarlas al nuevo codigo de tu modelo o clase Alumno quedando de la siguiente manera.
import java.util.Scanner;
public class Prog2 {
public static void ini_alumno (Alumno A){
Scanner leer = new Scanner(System.in);
System.out.println("Da nombre");
string name = leer.nextLine();
A.Setname(name); //Como te daras cuenta al decir Setname() identifico que estoy estableciendo un valor
System.out.println("Da edad de " + A.Getname() + ": "); //De igual forma al decir Getname() me doy cuenta que estoy obteniendo un valor
int edad=leer.nextInt();
A.Setedad(edad);
A.Setcalif((float)(Math.random()*10.0)); // La calificacion se obtiene aleatoriamente.
}
public static void ver_info_alumno(Alumno A){
System.out.printf("%s\t\t%d\t\t%2.1f\n",A.Getname(),A.Getedad(),A.Getcalif());
}
static float promedio(float AlumnoA1 , float AlumnoA2, float AlumnoA3){ //Funcion
float prom;
prom = (AlumnoA1 + AlumnoA2 + AlumnoA3)/3;
return prom;
}
/*
*En este metodo que marcas o indicas que tienes tu problema identifico que solo estas realizando una unica validacion, dado
*que si analisas bien tu problema requieres de mas validaciones, te recomendaria que usaras un array pero como vas iniciando
*lo resolveremos de la forma larga
*/
static Alumno mejor_calificacion (Alumno A1 , Alumno A2, Alumno A3){
List<Alumno> listaAlumno=new ArrayList<Alumno>(); //Inicializamos una lista para hacer mas faciles las validaciones
Alumno alumnoMayor=new Alumno();
alumnoMayor.Setcalif(0);
//Te plantee la solucion de esta forma espero te sirva y si tienes las posibilidades de indagar un poco, te recomiendo que trates de
//implementar un ciclo foreach.
for(int i=0; i<listaAlumno.size(); i++){ //Espero y conoscas los bucles FOR
if(listaAlumno.Get(i).Getcalif()>alumnoMayor.Getcalif()){
alumnoMayor=listaAlumno.Get(i);
}
}
return alumnoMayor;
}
}
public static void main(String[] args) {
System.out.println("Alumno 1");
Alumno A1= new Alumno();
ini_alumno(A1);
System.out.println("Alumno 2");
Alumno A2= new Alumno();
ini_alumno(A2);
System.out.println("Alumno 3");
Alumno A3= new Alumno();
ini_alumno(A3);
System.out.println("Nombre "+" Edad "+ " Calificacion");
ver_info_alumno(A1);
ver_info_alumno(A2);
ver_info_alumno(A3);
System.out.printf("fEl promedio de los alumnos es :"+promedio(A1.calif, A2.calif, A3.calif));
}
}
Espero y te sirva de ayuda y perdona por reemplantear todo pero siempre hay que buscar la mejor forma posible de hacer codigo limpio