elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ayuda para que un metodo me devuelva un objeto
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda para que un metodo me devuelva un objeto  (Leído 3,957 veces)
rych

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Ayuda para que un metodo me devuelva un objeto
« en: 1 Mayo 2016, 02:05 am »

Hola ,espero puedan ayudarme estoy tratando de hacer un programa en donde tengo una clase llamada Alumno donde tengo definidas las siguientes variables


public class Alumno {
   
   String name;
   int edad;
   float calif;
   

}

y mi main,en el cual tengo por ahorita definidos dos metodos uno que inicializa a los alumnos y otro que me los muestra por pantalla, pero tengo problemas para realizar un tercer metodo en el cual me muestre al alumno con mayor calificacion esto incluyendo todos sus datos , espero puedan ayudarme este es mi codigo

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");
      A.name = leer.nextLine();
      System.out.println("Da edad de " + A.name + ": ");
      A.edad = leer.nextInt();
      A.calif = (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.name,A.edad,A.calif);
      
   }
   
   static float promedio(float AlumnoA1 , float AlumnoA2, float AlumnoA3){  //Funcion
      float prom;
      prom = (AlumnoA1 + AlumnoA2 + AlumnoA3)/3;
      
      return prom;
   }
   
   static Alumno mejor_calificacion (Alumno A1 , Alumno A2, Alumno A3){// Este es el                      //metodo que no puedo realizar
      
      
      if(A1.calif>A2.calif){// aqui comparo las califcaciones
      return System.out.println(ver_info_alumno(A1));//Pero en esta parte no se       // como realizar el return del metodo , ya que no se como retornar un objeto

      }
         
   }

   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 puedan ayudarme,soy nuevo en esto gracias!!


En línea

LeHaine

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Ayuda para que un metodo me devuelva un objeto
« Respuesta #1 en: 1 Mayo 2016, 03:29 am »

Hola. Para realizar tu tercero método, necesitas asegurarte de que el método returns el objeto correcto.

El problema:

Código:
public static void ver_info_alumno(Alumno A){
      System.out.printf("%s\t\t%d\t\t%2.1f\n",A.name,A.edad,A.calif);
}
 

El método returns void. Quieres return String. Entonces:

Código:

public static String ver_info_alumno(Alumno A){
      return A.name + "\t\t" + A.edad + "\t\t" + A.calif;
}

Y en tu tercero método, puedes usar System.out.println:
Código:
static Alumno mejor_calificacion (Alumno A1 , Alumno A2, Alumno A3) {
      if(A1.calif > A2.calif){
           System.out.println(ver_info_alumno(A1));
      }
}

Por favor, discúlpame por mi español.


« Última modificación: 1 Mayo 2016, 03:32 am por LeHaine » En línea

crack81

Desconectado Desconectado

Mensajes: 222



Ver Perfil
Re: Ayuda para que un metodo me devuelva un objeto
« Respuesta #2 en: 1 Mayo 2016, 03:44 am »

Hola  @rych primero que todo tu codigo parece mas codico style C que codigo java, ya que
esta hecho de manera  secuencial lo cual no esta mal pero en java se "supe" se deberia trabajar con el paradigma de programacion orientada a objetos.

Bueno con respecto a tu pregunta la respuesta es esta:

Código
  1. public Alumno(Alumno a1,Alumno a2,Alumno a3 ){
  2.       if((a1.califacion>a2.califiacion) && (a1.califacion>a3.califiacion)){
  3.          return a1;
  4.       }
  5.       else if ((a2.califacion>a1.califiacion) && (a2.califacion>a3.califiacion)){
  6.           return a2;
  7.       }
  8.       else{
  9.          return a3;
  10.       }
  11.   }

Pero no es precisamente lo mejor, imagina que tienes mas de 3 alumnos esta funcion no serviria lo mejor es guardar tus alumnas en un arreglo o lista de alumnos para despues
recorrerlos con un for y saber cual tiene mejor califiacion.

Bueno me decidi ha armarte una posible solucion

Código
  1. import java.util.ArrayList;
  2. import java.util.List;
  3.  
  4. public class ElhackerNET {
  5.  
  6.  
  7.    public static void main(String[] args) {
  8.        Alumno al1=new Alumno("jose", 10, 8);
  9.        Alumno al2=new Alumno("Maria", 12, 9);
  10.        Alumno al3=new Alumno("Pedro", 11, 7);
  11.  
  12.        AdministrarAlumnos alumnos=new AdministrarAlumnos();
  13.  
  14.        //Insertar los alumanos uno por uno
  15.        alumnos.anadirAlumno(al1);
  16.        alumnos.anadirAlumno(al2);
  17.        alumnos.anadirAlumno(al3);
  18.  
  19.        //Mostramos los resultados
  20.        System.out.println("El promedio es "+alumnos.promedio());
  21.        System.out.println("El mejor estudiante es "+alumnos.mejorAlumno().getNombre());
  22.  
  23.  
  24.        //Eliminamos los alumnos
  25.        alumnos.eliminarAlumnos();
  26.    }
  27.  
  28. }
  29.  
  30. class Alumno{
  31.  
  32.    private String nombre;
  33.    private int edad;
  34.    private int calificacion;
  35.  
  36.    public Alumno(String nombre, int edad, int calificacion) {
  37.        this.nombre = nombre;
  38.        this.edad = edad;
  39.        this.calificacion = calificacion;
  40.    }
  41.  
  42.    public String getNombre() {
  43.        return nombre;
  44.    }
  45.  
  46.    public int getEdad() {
  47.        return edad;
  48.    }
  49.  
  50.    public int getCalificacion() {
  51.        return calificacion;
  52.    }  
  53. }
  54.  
  55. class AdministrarAlumnos{
  56.  
  57.    private List<Alumno> alumnos;
  58.  
  59.    /*Constructores de la clase*/
  60.    public AdministrarAlumnos(){
  61.       this.alumnos=new ArrayList<>();
  62.    }
  63.    public AdministrarAlumnos(List<Alumno> alumnos){
  64.       this.alumnos.addAll(alumnos);
  65.    }
  66.  
  67.    /*
  68.       Anadimos un solo alumno
  69.     */
  70.    public void anadirAlumno(Alumno alumno){
  71.        alumnos.add(alumno);
  72.    }
  73.  
  74.    /*
  75.       Anadimos una lista de alumnos
  76.     */
  77.    public void anadirAlumnos(List<Alumno> alumnos){
  78.        this.alumnos.addAll(alumnos);
  79.    }
  80.  
  81.  
  82.   /*
  83.     Obtenemos el promedio de las califaciones
  84.     */
  85.   public float promedio(){
  86.       float promedio=0;
  87.       for(Alumno a:alumnos){
  88.          promedio+=a.getCalificacion();
  89.       }
  90.       return promedio/alumnos.size();
  91.   }
  92.  
  93.   /*
  94.      Obtenemos el Alumno con la mejor calificacion
  95.    */
  96.   public Alumno mejorAlumno(){
  97.       int maxCalifacion=0;
  98.       Alumno xAlumno=null;
  99.  
  100.       for(Alumno a:alumnos){
  101.          if(maxCalifacion<a.getCalificacion()){
  102.            maxCalifacion=a.getCalificacion();
  103.            xAlumno=a;
  104.          }
  105.       }
  106.       return xAlumno;
  107.   }
  108.  
  109.   public void eliminarAlumnos(){
  110.     this.alumnos.clear();
  111.   }
  112.  
  113. }
  114.  
En línea

Si C/C++ es el padre de los lenguajes entonces ASM es dios.
rych

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda para que un metodo me devuelva un objeto
« Respuesta #3 en: 1 Mayo 2016, 19:30 pm »

@crack81 muchas gracias por la explicacion , lo que sucede que apenas estamos conociendo a ver los conceptos de objetos ,clases y pase de parametros, respecto a la respuesta me podrias ayudar es que en el metodo que me indicas el ejercicio me pide mostrar por pantalla todos los datos de el alumno que tenga la mejor calificacion y ya intente usando lo que me comentas pero no me muestra los datos del alumno.
Gracias por lo ayuda.
En línea

rych

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda para que un metodo me devuelva un objeto
« Respuesta #4 en: 1 Mayo 2016, 19:34 pm »

@LeHaine gracias tu español se entiende muy bien ! pero tengo un proble ma es esta parte

public static String ver_info_alumno(Alumno A){
      return A.name + "\t\t" + A.edad + "\t\t" + A.calif;
}

Ya que no me muestra por pantalla la informacion de los alumnos intente modicifcar pero aun soy novato en esto  :-(

En línea

+ 1 Oculto(s)

Desconectado Desconectado

Mensajes: 298


un defecto se puede convertir en una virtud


Ver Perfil WWW
Re: Ayuda para que un metodo me devuelva un objeto
« Respuesta #5 en: 2 Mayo 2016, 03:29 am »

no utilices donde sea static

todo tiene un objetivo...
saludos...
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines