Autor
|
Tema: problema al intentar ejecutar un metodo cuando un boolean es true (Leído 5,038 veces)
|
robertofd1995
Desconectado
Mensajes: 172
|
el titulo no es muy bueno pero no se me ocurria otra cosa jaja mi problema es el siguiente , tengo que comprobar si el combustible del avion es 0 o menor , si es asi debe devolver false , de tener combustible , al ejecutar el boolean fly debe restarle uno a combustible , yo tengo esto public boolean fly() { if (getCombustible() <=0) return false ; else return true ; } public void move(){ if (fly()==true) combustible=combustible-1; } cabe decir que combustible es un int , no copio todo el programa porque es extenso y no tiene que ver con mi problema , el problema es que para hacer lo que quiero tengo que ejecutar primero el metodo fly y luego el move , yo lo que quiero hacer es que si el boolean es true , directamente le reste uno a combustible, sin tener que usar el metodo move espero que me podais ayudar , un saludo y gracias
|
|
|
En línea
|
|
|
|
Mitsu
|
Si el método move lo estás usando para comparar el valor del combustible, para luego decrementar el mismo, y no lo usas para otra cosa, puedes simplemente hacer: public void fly() { if (getCombustible() >0) { combustible--; } }
Donde cada vez que se llama a fly(), se obtiene el combustible y se compara si es mayor a 0, de ser así, se le resta directamente 1.
|
|
|
En línea
|
|
|
|
robertofd1995
Desconectado
Mensajes: 172
|
el problema es que tengo que usar boolean porque me lo especifica el ej , estoy en primero de carrera , pero no se como hacer para modificar parametros dentro del boolean ademas en el ejemplo solo puse lo del combustible , pero tambien tengo que cambiar mas valores de otros metodos si el bolean es true ,
|
|
« Última modificación: 1 Noviembre 2013, 11:43 am por robertofd1995 »
|
En línea
|
|
|
|
Mitsu
|
el problema es que para hacer lo que quiero tengo que ejecutar primero el metodo fly y luego el move , yo lo que quiero hacer es que si el boolean es true , directamente le reste uno a combustible, sin tener que usar el metodo move.
public boolean fly() boolean puedeVolar = false; { if (getCombustible() >0) { combustible--; puedeVolar = true; } return puedeVolar; }
pero no se como hacer para modificar parametros dentro del boolean.
Modificar parámetros? Si necesitas adicionar parámetros a tus métodos simplemente adicionalos. O puedes sobrecargar un metodo para que acepte otros parámetros.
|
|
|
En línea
|
|
|
|
robertofd1995
Desconectado
Mensajes: 172
|
a ver perdona pero no me estoy explicanco con claridad y no nos estamos entendiendo yo tengo estas variables , combustible , xSpeed , ySpeed , xPos y yPos , todos son int vale lo que quiero hacer es que si el metodo fly me devuelve true , este ha de restar uno a combustible y modificar la posicion sumandole la velocidad , voy a comer a ver si me respondes y sino subo el codigo entero y ya nos entenderemos mejor y gracias por la ayuda
|
|
|
En línea
|
|
|
|
Paybck
Desconectado
Mensajes: 5
|
Jajajas, que risas, compañero de clase.
|
|
|
En línea
|
|
|
|
Paybck
Desconectado
Mensajes: 5
|
Yo pondría:
if(combustible=0) return false; else { combustible=combustible-1; return true; }
Saludos!
|
|
|
En línea
|
|
|
|
Mitsu
|
Yo pondría:
if(combustible=0) return false; else { combustible=combustible-1; return true; }
1) combustible = 0 te dará un error de compilación. La forma de comparar es ==. 2) Como sabes en Java no se puede excluir los negativos de un entero. Por tal razón debe de colocarse: if (combustible<=0) { }
Si te fijas, en el método que he puesto más arriba, capto la lógica: public boolean fly() boolean puedeVolar = false; { // si el combustible es mayor a 0, se podra restar a combustible // ademas puedevolar se convierte en true, indicando que puede volar if (getCombustible() >0) { combustible--; puedeVolar = true; } // aqui puedes imaginar un else vacio, si combustible es < 0 // no le resta a combustible, y devuelve false, ya no puede volar. return puedeVolar; }
yo tengo estas variables , combustible , xSpeed , ySpeed , xPos y yPos , todos son int
vale lo que quiero hacer es que si el metodo fly me devuelve true , este ha de restar uno a combustible y modificar la posicion sumandole la velocidad.
Antes que todo, te recomendaría que para el combustible uses un byte (-127 / +128). Un Int tiene un rango de -2,147,483,648 y +2,147,483,647. Un Short -32,768 y +32,767.Lo más sencillo que me imagino, es crear mis métodos para mover el avión: private void mover() { xPos++; yPos++; }
private void acelerar() { xSpeed++; ySpeed++; }
Luego, desde el método fly: public boolean fly() boolean puedeVolar = false; { // si el combustible es mayor a 0, se podra restar a combustible // ademas puedevolar se convierte en true, indicando que puede volar if (getCombustible() >0) { combustible--; mover(); // como hay combustible, llamamos inmediatamente al metodo mover acelerar(); // lo mismo con acelerar puedeVolar = true; } // aqui puedes imaginar un else vacio, si combustible es < 0 // no le resta a combustible, y devuelve false, ya no puede volar. return puedeVolar; }
Otra forma, que es casi lo mismo: public boolean fly() boolean puedeVolar = false; { // si el combustible es mayor a 0, se podra restar a combustible // ademas puedevolar se convierte en true, indicando que puede volar if (getCombustible() >0) { puedeVolar = true; } // aqui puedes imaginar un else vacio, si combustible es < 0 // no le resta a combustible, y devuelve false, ya no puede volar. return puedeVolar; }
Luego, desde un método captamos el valor que devuelve fly, si es true, restamos combustible, aumentamos posicion, y aumentamos velocidad: private void movilizar() { if (fly() ) { combustible--; mover(); acelerar(); } else { JOptionPane. showMessageDialog(null, "El avion se quedo sin combustible, aterrizara..."); } }
|
|
« Última modificación: 1 Noviembre 2013, 16:32 pm por JavaBrain »
|
En línea
|
|
|
|
robertofd1995
Desconectado
Mensajes: 172
|
1) combustible = 0 te dará un error de compilación. La forma de comparar es ==. 2) Como sabes en Java no se puede excluir los negativos de un entero. Por tal razón debe de colocarse: if (combustible<=0) { }
Si te fijas, en el método que he puesto más arriba, capto la lógica: public boolean fly() boolean puedeVolar = false; { // si el combustible es mayor a 0, se podra restar a combustible // ademas puedevolar se convierte en true, indicando que puede volar if (getCombustible() >0) { combustible--; puedeVolar = true; } // aqui puedes imaginar un else vacio, si combustible es < 0 // no le resta a combustible, y devuelve false, ya no puede volar. return puedeVolar; }
Lo más sencillo que me imagino, es crear mis métodos para mover el avión: private void mover() { xPos++; yPos++; }
private void acelerar() { xSpeed++; ySpeed++; }
Luego, desde el método fly: public boolean fly() boolean puedeVolar = false; { // si el combustible es mayor a 0, se podra restar a combustible // ademas puedevolar se convierte en true, indicando que puede volar if (getCombustible() >0) { combustible--; mover(); // como hay combustible, llamamos inmediatamente al metodo mover acelerar(); // lo mismo con acelerar puedeVolar = true; } // aqui puedes imaginar un else vacio, si combustible es < 0 // no le resta a combustible, y devuelve false, ya no puede volar. return puedeVolar; }
vale gracias los metodos de mover y acelerar ya los tengo creados , yo el problema que tenia es que al meter combustible -=1 debajo de return no me funcionaba , ya veo como hay que estructurarlo gracias
|
|
|
En línea
|
|
|
|
robertofd1995
Desconectado
Mensajes: 172
|
Jajajas, que risas, compañero de clase. jajaj es que laboratorio estas ?
|
|
|
En línea
|
|
|
|
|
|