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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  problema al intentar ejecutar un metodo cuando un boolean es true
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: problema al intentar ejecutar un metodo cuando un boolean es true  (Leído 4,984 veces)
robertofd1995

Desconectado Desconectado

Mensajes: 172


Ver Perfil
problema al intentar ejecutar un metodo cuando un boolean es true
« en: 1 Noviembre 2013, 00:22 am »

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

Código:
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

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: problema al intentar ejecutar un metodo cuando un boolean es true
« Respuesta #1 en: 1 Noviembre 2013, 01:40 am »

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:

Código
  1. public void fly()
  2.    {
  3.     if (getCombustible() >0) {
  4.          combustible--;
  5.     }      
  6. }
  7.  

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 Desconectado

Mensajes: 172


Ver Perfil
Re: problema al intentar ejecutar un metodo cuando un boolean es true
« Respuesta #2 en: 1 Noviembre 2013, 11:31 am »

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

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: problema al intentar ejecutar un metodo cuando un boolean es true
« Respuesta #3 en: 1 Noviembre 2013, 13:11 pm »

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.

Código
  1. public boolean fly()
  2. boolean puedeVolar = false;
  3.    {
  4.     if (getCombustible() >0) {
  5.          combustible--;
  6.          puedeVolar = true;
  7.     }
  8.  
  9.      return puedeVolar;
  10. }
  11.  


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.
En línea

robertofd1995

Desconectado Desconectado

Mensajes: 172


Ver Perfil
Re: problema al intentar ejecutar un metodo cuando un boolean es true
« Respuesta #4 en: 1 Noviembre 2013, 14:44 pm »

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
En línea

Paybck

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: problema al intentar ejecutar un metodo cuando un boolean es true
« Respuesta #5 en: 1 Noviembre 2013, 15:16 pm »

Jajajas, que risas, compañero de clase. :D
En línea

Paybck

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: problema al intentar ejecutar un metodo cuando un boolean es true
« Respuesta #6 en: 1 Noviembre 2013, 15:22 pm »

Yo pondría:

if(combustible=0)
     return false;
else
    {
       combustible=combustible-1;
       return true;
     }

Saludos!
En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: problema al intentar ejecutar un metodo cuando un boolean es true
« Respuesta #7 en: 1 Noviembre 2013, 16:23 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:

Código
  1. if (combustible<=0) {
  2.  
  3. }
  4.  

Si te fijas, en el método que he puesto más arriba, capto la lógica:

Código
  1. public boolean fly()
  2. boolean puedeVolar = false;
  3.    {
  4.     // si el combustible es mayor a 0, se podra restar a combustible
  5.     // ademas puedevolar se convierte en true, indicando que puede volar
  6.     if (getCombustible() >0) {
  7.          combustible--;
  8.          puedeVolar = true;
  9.     }
  10.     // aqui puedes imaginar un else vacio, si combustible es < 0
  11.     // no le resta a combustible, y devuelve false, ya no puede volar.
  12.  
  13.      return puedeVolar;
  14. }
  15.  

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:

Código
  1. private void mover() {
  2.  xPos++;
  3.  yPos++;
  4. }
  5.  

Código
  1. private void acelerar() {
  2.  xSpeed++;
  3.  ySpeed++;
  4. }
  5.  

Luego, desde el método fly:

Código
  1. public boolean fly()
  2. boolean puedeVolar = false;
  3.    {
  4.     // si el combustible es mayor a 0, se podra restar a combustible
  5.     // ademas puedevolar se convierte en true, indicando que puede volar
  6.     if (getCombustible() >0) {
  7.          combustible--;
  8.          mover(); // como hay combustible, llamamos inmediatamente al metodo mover
  9.          acelerar(); // lo mismo con acelerar
  10.          puedeVolar = true;
  11.     }
  12.     // aqui puedes imaginar un else vacio, si combustible es < 0
  13.     // no le resta a combustible, y devuelve false, ya no puede volar.
  14.  
  15.      return puedeVolar;
  16. }
  17.  

Otra forma, que es casi lo mismo:

Código
  1. public boolean fly()
  2. boolean puedeVolar = false;
  3.    {
  4.     // si el combustible es mayor a 0, se podra restar a combustible
  5.     // ademas puedevolar se convierte en true, indicando que puede volar
  6.     if (getCombustible() >0) {
  7.          puedeVolar = true;
  8.     }
  9.     // aqui puedes imaginar un else vacio, si combustible es < 0
  10.     // no le resta a combustible, y devuelve false, ya no puede volar.
  11.  
  12.      return puedeVolar;
  13. }
  14.  

Luego, desde un método captamos el valor que devuelve fly, si es true, restamos combustible, aumentamos posicion, y aumentamos velocidad:

Código
  1. private void movilizar() {
  2.  
  3.   if (fly() ) {
  4.     combustible--;
  5.     mover();
  6.     acelerar();
  7.   }
  8.   else {
  9.     JOptionPane.showMessageDialog(null,"El avion se quedo sin combustible, aterrizara...");
  10.   }
  11. }
  12.  
« Última modificación: 1 Noviembre 2013, 16:32 pm por JavaBrain » En línea

robertofd1995

Desconectado Desconectado

Mensajes: 172


Ver Perfil
Re: problema al intentar ejecutar un metodo cuando un boolean es true
« Respuesta #8 en: 1 Noviembre 2013, 16:28 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:

Código
  1. if (combustible<=0) {
  2.  
  3. }
  4.  

Si te fijas, en el método que he puesto más arriba, capto la lógica:

Código
  1. public boolean fly()
  2. boolean puedeVolar = false;
  3.    {
  4.     // si el combustible es mayor a 0, se podra restar a combustible
  5.     // ademas puedevolar se convierte en true, indicando que puede volar
  6.     if (getCombustible() >0) {
  7.          combustible--;
  8.          puedeVolar = true;
  9.     }
  10.     // aqui puedes imaginar un else vacio, si combustible es < 0
  11.     // no le resta a combustible, y devuelve false, ya no puede volar.
  12.  
  13.      return puedeVolar;
  14. }
  15.  

Lo más sencillo que me imagino, es crear mis métodos para mover el avión:

Código
  1. private void mover() {
  2.  xPos++;
  3.  yPos++;
  4. }
  5.  

Código
  1. private void acelerar() {
  2.  xSpeed++;
  3.  ySpeed++;
  4. }
  5.  

Luego, desde el método fly:

Código
  1. public boolean fly()
  2. boolean puedeVolar = false;
  3.    {
  4.     // si el combustible es mayor a 0, se podra restar a combustible
  5.     // ademas puedevolar se convierte en true, indicando que puede volar
  6.     if (getCombustible() >0) {
  7.          combustible--;
  8.          mover(); // como hay combustible, llamamos inmediatamente al metodo mover
  9.          acelerar(); // lo mismo con acelerar
  10.          puedeVolar = true;
  11.     }
  12.     // aqui puedes imaginar un else vacio, si combustible es < 0
  13.     // no le resta a combustible, y devuelve false, ya no puede volar.
  14.  
  15.      return puedeVolar;
  16. }
  17.  


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 Desconectado

Mensajes: 172


Ver Perfil
Re: problema al intentar ejecutar un metodo cuando un boolean es true
« Respuesta #9 en: 1 Noviembre 2013, 16:30 pm »

Jajajas, que risas, compañero de clase. :D

jajaj es que laboratorio estas ?
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ejecutar una accion, pero cuando se produzca un cambio(una especie de simulacion
Programación Visual Basic
renga73 1 1,245 Último mensaje 17 Marzo 2006, 12:39 pm
por _Sergi_
Ejecutar un archivo .exe oculto cuando se ejecute un .mp3
Dudas Generales
net_rs 5 7,189 Último mensaje 15 Octubre 2010, 12:00 pm
por cdt
[Python]Problema al ejecutar metodo principal
Scripting
Debci 3 5,709 Último mensaje 10 Septiembre 2010, 17:15 pm
por Debci
¿Qué método usar para WLAN_XXXX cuando no sale con el algoritmo?
Hacking Wireless
ullu 3 3,333 Último mensaje 29 Abril 2012, 17:28 pm
por alex2424
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines