Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: caludo en 21 de Noviembre 2014, 02:52
-
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.
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!!!
-
Hola, tambien soy nuevo con la programacion. Espero poder ayudarte
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
"Mostrar un"+9
se mostraria por pantalla Mostrar un9
"Mostrar un "9
Mostrar 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
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
-
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!!!!!