Acceder a variables dentro de la misma clase

Iniciado por evans88, 7 Abril 2013, 19:19 PM

0 Miembros y 1 Visitante están viendo este tema.

evans88

Hola, quería hacerles una consulta de como acceder a una variable declarada por otra funcion en la misma clase. No se si se entiende. Yo tengo un programa que estoy haciendo para hacer unos calculos de la universidad (todavia soy un poco nuevo a Java y es un hobbie), el problema es que tengo (casi) todo el programa en el main y lo quiero separar en clases, en fin, tengo esta clase:

Código (java) [Seleccionar]

public class Ecuacion {
     
    public class Ecuacion ( double tr, double pr, double z0, int decimales ) {

       // Calculos matematicos...........

       //Aqui defino las variables a,b,z1 y error haciendoles algunas operaciones matematicas a los argumentos. por ejemplo:

        double b = pr/(8*tr);



    }

     public Vector Calcular() {
   
      /*Aqui hago el calculo (para lo que sirve el programa) y genero dos elementos del tipo Vector.
      Uno contiene los datos de las filas de una tabla y el otro el nombre de las columnas. Por ejemplo:*/

               Vector columnas = new Vector();
columnas.add("<html>Z<sub>i</sub></html>:");
columnas.add("<html>Z<sub>i+1</sub></html>:");
columnas.add("error (%)");

      // Y luego quiero que esta clase devuelva los vectores filas y columnas para poderlos utilizar en el main de otra clase.

       return filas, columnas;

     }


}




Ahora bien, lo que yo he intentado y no puedo hacer es utilizar las variables z1,z0,error,a y b de la funcion Ecuacion en la funcion Calcular(). Si me podrian ayudar se los agradeceria mucho

dennis094

Te falta declarar las variables antes del constructor me parece.
Yo haria algo asi:


/**
*
* @author Dennis
*/

//CLASE ECUACION

public class Ecuacion {

//variables public class Ecuacion
   private double tr;
   private double pr;
   private double z0;
   private int decimales;
   private double b;
//constructor

   public Ecuacion(double tr, double pr, double z0, double b, int decimales) {
       this.tr = tr;
       this.pr = pr;
       this.z0 = z0;
       this.decimales = decimales;
       this.b = (getPr() / (8 * getTr()));
   }
//get = sacar valor; set = asignar valor.

   public double getTr() {
       return tr;
   }

   public void setTr(double tr) {
       this.tr = tr;
   }

   public double getPr() {
       return pr;
   }

   public void setPr(double pr) {
       this.pr = pr;
   }

   public double getZ0() {
       return z0;
   }

   public void setZ0(double z0) {
       this.z0 = z0;
   }

   public int getDecimales() {
       return decimales;
   }

   public void setDecimales(int decimales) {
       this.decimales = decimales;
   }

   public double getB() {
       return b;
   }

   public void setB(double b) {
       this.b = b;
   }
}
// MAIN

public class MAIN{
   public static void main(String[] args) {
       Ecuacion ec1 = new Ecuacion(12.2,10.1,10.0,10.6,3);
       System.out.println("El resultado de 'b' es: "+ ec1.getB());
   }
}


Esta hecho un poco "bruto" pero bueno, asi puedes calcular el valor de b.
Siempre que quieras interactuar con objetos y clases debes instanciar los objetos, y darles un cierto valor.
Lo he hecho en 10 min y esta un poco jarcho, pero funciona jajaja.
Igual para calcular 'b' deberia haber hecho un metodo aparte y eso, pero bueno...

Lo de las matrices ya no se decirte por que aun no he dado nada de eso...

PD:. te aconsejo un muy buen libro sobre java, con documentacion, ejercicios...
PIENSA EN JAVA, 4º Edicion.

Un saludo !

Mitgus

Hola.

Primero que nada unos consejillos.

1.- Tódo método debe empezar por minúscula. Ejemplo: calcular()
En caso sean 2 palabras, la primera letra de la segunda palabra se puede escribir con mayúscula:

getVectores()

2.- La sintaxis del constructor de la clase debe ser:

Código (=java) [Seleccionar]

public NombreDeLaClase()


No se debe anteponer 'class' por que no es una clase.

3.- Siempre declara las variables que vas a usar en distintos métodos al inciciar la clase. Si una variable solo es necesaria para un metodo, se debe declarar dentro del metodo.

4.- Acostúmbrate a usar métodos setters y getters como te dijo el compañero de arriba.

setVector() -> Set de usa para establecer un valor u operaciones.
getVector() -> Get se usa para obtener valores u operaciones.

Es una buena práctica de programación.



Ahora, te dejo tu código modificado, para que te des cuenta de algunos detalles:

Código (=java) [Seleccionar]
import java.util.Vector;

public class Ecuacion {
 
  private double tr;
  private double pr;
  private double z0;
  private double b=0;
  private int decimales;
  private Vector columnas;

   public Ecuacion( double tr, double pr, double z0, int decimales ) {

      // Calculos matematicos...........

      //Aqui defino las variables a,b,z1 y error haciendoles algunas operaciones matematicas a los argumentos. por ejemplo:
     this.tr = tr;
     this.pr = pr;
     this.z0 = z0;
     this.decimales = decimales;

     b = pr/(8*tr);



   } // fin constructor
   
   // metodo para obtener el resultado de la ecuacion
   public double getEcuacion()
   {
     return b;
   }

    public void calcular() {

     /*Aqui hago el calculo (para lo que sirve el programa) y genero dos elementos del tipo Vector.
      Uno contiene los datos de las filas de una tabla y el otro el nombre de las columnas. Por ejemplo:*/

              columnas = new Vector();
columnas.add("<html>Z<sub>i</sub></html>:");
columnas.add("<html>Z<sub>i+1</sub></html>:");
columnas.add("error (%)");

     // Y luego quiero que esta clase devuelva los vectores filas y columnas para poderlos utilizar en el main de otra clase.


    }
   
    // metodo para obtener el Vector columnas
    public Vector getVectores()
    {
      return columnas;
    }
   


public static void main(String[] args)
{
  Ecuacion ejemplo = new Ecuacion(9.2,11.3,5.7,4);
 
  // ejemplo de uso de metodos de la clase ejecutora
  ejemplo.calcular();
 
  // Aquí haces tus operaciones con los datos obtenidos de la clase, por ejemplo yo los imprimo
  System.out.println("Tu vector es: "+ejemplo.getVectores() );
  System.out.println("La ecuacion es : "+ejemplo.getEcuacion() );
 
  // ahora, tambien es factible hacer esto
  Vector columna; // creas una variable personal para 'obtener' valores usando metodos que llame el objeto del main
  columna = ejemplo.getVectores();
 
  System.out.println("Tu vector es: "+columna); // es el mismo resultado!
}

} // fin




Por Consola:

Código (=java) [Seleccionar]

Tu vector es: [<html>Z<sub>i</sub></html>:, <html>Z<sub>i+1</sub></html>:, error (%)]
La ecuacion es : 0.1535326086956522
Tu vector es: [<html>Z<sub>i</sub></html>:, <html>Z<sub>i+1</sub></html>:, error (%)]




Bendiciones :)
Linux User #560388

evans88

Muchas gracias por todo, el problema era que las tenia que declarar. Gracias ademas por los consejos. Saludos