el titulo no es muy bueno pero no se me ocurria otra cosa jaja ;D
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 ;-)
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.
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 ,
Citar
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;
}
Citar
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.
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 ;D
Jajajas, que risas, compañero de clase. :D
Yo pondría:
if(combustible=0)
return false;
else
{
combustible=combustible-1;
return true;
}
Saludos!
Cita de: danicuestasuarez en 1 Noviembre 2013, 15:22 PM
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;
}
Cita de: robertofd1995 en 1 Noviembre 2013, 14:44 PM
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...");
}
}
Cita de: JavaBrain en 1 Noviembre 2013, 16:23 PM
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
Cita de: danicuestasuarez en 1 Noviembre 2013, 15:16 PM
Jajajas, que risas, compañero de clase. :D
jajaj es que laboratorio estas ?
Actualicé, puse otra forma un poco más ordenada, aunque es igual.
Espero te haya servido. Saludos.
PD: Las conversaciones personales por privado, para no desvirtuar los temas.