Autor Tema: problema con un metodo en una clase Java almacenar valores en un atributo  (Leído 3335 veces)

caludo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 33
    • Ver Perfil
Hola, a ver si alguien me puede echar una mano con este ejercicio(estoy empezando en este mundo de la POO):

Tengo 2 clases, la clase Jugadores y la clase JugadoresMain. En principio lo que intento que haga el programa es que al pasar un valor(salto) por el metodo PasadoMetro este método determine si el salto es mayor a 1, en este caso si es menor  que 1 te indica que lo "sigas intentando", pero si es mayor te da el mensaje que se ha pasado de 1 y llama al método SaltoMasAlto para ver si hay un nuevo record o no.

En el metodo SaltoMasAlto mi intención es que si el nuevo salto es mayor que el salto "guardado"(mayor que 1) te indique que hay un nuevo record, sino, si el salto "guardado" es mayor entonces te indica que ese sigue siendo el record.

Por ejemplo mi intención es que : si el primer salto es 1.1, 1.1>1 por lo tanto entra en el metodo SaltoMasAlto, como no hay nada guardado entonces 1.1 es el nuevo record...Si el segundo salto es 1.4, 1.4>1 por lo tanto entra en el metodo SaltoMasAlto,1.4>1.1
 *por lo tanto hay nuevo record...Si el tercer salto es 1.2, 1.2>1 por lo tanto entra en el metodo SaltoMasAlto, 1.2<1.4 por lo tanto no hay nuevo record...

Sé donde está el fallo de mi ejercicio, y es que en el if(salto>this.salto) del metodo "SaltoMasAlto" esa condicion siempre se cumple ya que this.salto es cero...pero no se me ocurre como resolverlo y hacer que "this.salto" (o cualquier otra variable que pueda crear) pueda guardar el valor del salto mas alto para así compararlo con el nuevo salto.


Código: [Seleccionar]
public class Jugadores {


private int edad;
private double salto;
private int puntos;
private String apellido;
private String nombre;


public Jugadores(){
this.nombre="Lebron";
this.apellido="James";
this.edad=27;



}
public Jugadores(String nombre,String apellido,int edad){
this.nombre=nombre;
this.apellido=apellido;

this.edad=edad;


}

public String GetNom(){
return this.nombre;
}
public String GetAp(){
return this.nombre;
}

public void PasadoMetro(double salto){

if(salto>1){

System.out.println(this.nombre+" "+this.apellido+" Ha pasado de 1, eres un campeón");

SaltoMasAlto(salto);

}else{
System.out.println("Siga intentandolo, salto mejorable");
}

}
private void SaltoMasAlto(double salto){



if(salto>this.salto){


System.out.println("El nuevo record es"+salto);
}else{
System.out.println("El record sigue siendo"+this.salto);
}
}
}



public class JugadoresMain {

public static void main(String[]args){

Jugadores jugador1=new Jugadores();


Jugadores jugador2=new Jugadores("Jose","Perez",32);

Jugadores jugador3=new Jugadores("Larry","Bird",35);


System.out.println("Primer salto de:"+jugador1.GetNom()+" "+jugador1.GetAp()+": 0,5");
jugador1.PasadoMetro(0.5);
System.out.println("Primer salto de:"+jugador2.GetNom()+" "+jugador2.GetAp()+": 1");
jugador2.PasadoMetro(1);


System.out.println("Primer salto de:"+jugador3.GetNom()+": 1,3");
jugador3.PasadoMetro(1.3);
System.out.println("Segundo salto de:"+jugador1.GetNom()+": 1,2");
jugador1.PasadoMetro(1.3);
System.out.println("Segundo salto de:"+jugador2.GetNom()+":2,1");
jugador2.PasadoMetro(2.1);
System.out.println("Segundo salto de:"+jugador1.GetNom()+": 1,1");
jugador1.PasadoMetro(1.1);
}
}





Gracias por la ayuda!!!
« Última modificación: 21 de Noviembre 2014, 08:17 por Alex Rodríguez »

LPM

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 35
    • Ver Perfil
Re:problema con un metodo en una clase
« Respuesta #1 en: 21 de Noviembre 2014, 04:34 »
Hola, tambien soy nuevo con la programacion. Espero poder ayudarte

Código: [Seleccionar]
public void pasadoMetro(double salto){
   
    if(salto>1){
       
        System.out.println(this.nombre+" "+this.apellido+" ha pasado de 1 con su salto de "+salto+" metros.\nEres  un campeón");   
   
        this.salto=salto;
   
    }else{
        System.out.println("Siga intentandolo, salto mejorable");
    }

}
public void saltoMasAlto(double salto){


   
    if(salto>this.salto){
       
   
    System.out.println("El nuevo record es"+salto);
    this.salto=salto;
    }else{
        System.out.println("El record sigue siendo"+this.salto);
    }
}

por convención, creo que solo las clases su primer letra es mayúscula, con lo que las variables empiezan con minúscula.

Despues de una cadena de texto, si querés imprimir algún valor conviene dejar un espacio para que el valor no quede pegado al texto

Código: [Seleccionar]
"Mostrar un"+9
se mostraria por pantalla Mostrar un9

Código: [Seleccionar]
"Mostrar un "9Mostrar un 9

Con lo de que this.salto siempre vale 0, cuando se cumple la condición de que el salto es mayor, le asignás el parámetro a la variable salto

Código: [Seleccionar]
this.salto=salto;
Luego, opinando, aparte de indicar que logró superar el metro de salto, pondría cuánto saltó, cosa de que sepa cuánto tiene que superar.

Luego, si declaraste público el primer método, también declararía público el segundo, aparte de que si es privado nadie podría jugar xd

Espero que algo de esto te sirva xd

caludo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 33
    • Ver Perfil
Re:problema con un metodo en una clase Java almacenar valores en un atributo
« Respuesta #2 en: 21 de Noviembre 2014, 08:27 »
Hola!Muchas gracias por todo,me has servido de mucha ayuda.En mis pruebas(no lo puse en el código anterior) ponía lo de this.salto=salto pero en el sitio equivocado xD
Sobre el segundo metodo, private lo he hecho más que nada para probar el "encapsulamiento".
Una vez más, gracias por todo!!!!!

 

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".