Hice esta misma pregunta en javaprogrammingforums.com pero parece que su sitio está abajo a la derecha ahora. Así que yo no podía ver qué respuestas (si las hubiere) que tengo que hacer. De todos modos, estoy mal pegado en esto de Java HW asignación. Lo que tengo hasta ahora se ve bien en términos de realización, ahora es sólo conseguir los valores de la derecha para que aparezca. Pretender que tengo este:

(Esto es sólo una parte de la 2ª clase de los dos con el constructor, el otro es el «tester»)

//private variables
boolean myP;
boolean myPla;
boolean myGl;
boolean myCa;

double myPlot;
int myCrust;

double myReduct;
double myNet;
double myGross;

boolean [] trshIt = {myP, myPla, myGl, myCa};
double [] CO2TrashEmissions = {184.0, 25.6, 46.6, 165.8};

//constructor
CO2FromWaste(int crust, boolean p, boolean pl, boolean gl, boolean ca)
{
    myPlot = 1018.0;
    myCrust = crust;
    myP = p;
    myPl = pl;
    myGl = gl;
    myCa = ca;
}

Mi problema es que la matriz de tipo boolean, trshIt. Ya me estoy poniendo las variables en la matriz de la que no se han inicializado sin embargo, se le da a las variables valores por defecto false. Si lo pongo en el constructor de la primera, luego me sale un error quejándose de que la variable trshIt no puede ser encontrado; apuntando a la instancia que estoy llamando a esa variable. Así, he tratado de diferentes formas en diferentes áreas y yo estoy como atrapado en un laberinto ahora tratando de conseguir que los de la matriz para que funcione correctamente. Necesito toda la ayuda que pueda conseguir. Ideas?

  • No se debe publicar la misma pregunta en varios lugares. Además, hemos añadido muchas etiquetas, a excepción de la más importante: «Java»…
  • Um. Bueno pues el otro foro yo estaba en es hacia abajo, este es mi primer hilo aquí…Y voy a arreglar las etiquetas.
InformationsquelleAutor Michael | 2012-02-19

3 Comentarios

  1. 0

    Declarar trshIt como un miembro de la clase, pero se inicializa en el constructor, como este:

    boolean [] trshIt;
    double [] CO2TrashEmissions = {184.0, 25.6, 46.6, 165.8};
    
    //constructor
    CO2FromWaste(int crust, boolean p, boolean pl, boolean gl, boolean ca)
    {
        myPlot = 1018.0;
        myCrust = crust;
        myP = p;
        myPl = pl;
        myGl = gl;
        myCa = ca;
    
        trshIt = new boolean[4];
        trshIt[0] = myP;
        trshIt[1] = myPla;
        trshIt[2] = myGl;
        trshIt[3] = myCa;
    }
    • Hmm, buen intento, aunque he intentado eso y me sale un «ilegal inicio de la expresión» error de derecho antes de la primera onduladas soporte en el trshIt matriz. Y es claro para mí por qué me sale esto.
    • Usted puede ser que necesite trshIt = new boolean[] {myP, myPla, myGl, myCa};
    • usted puede usar el atajo de la notación de matriz sólo cuando se declara la variable, es decir, usted puede hacer boolean[] a = {true, false}; pero no boolean[] a; a = {true, false};
    • Ooops. Ok. Editado para corregir eso.
    • FUNCIONÓ! Aunque he tenido que cambiar de boolean [] trshIt; a boolean [] trshIt = new boolean [4]; y agrega lo que se le ponga por la asignación de cada índice de la variable en el constructor. Finalmente la magia en el terminal.
  2. 2

    No funciona porque trshIt va a obtener sus valores de los campos antes de que se inicializa en el constructor.

    De iniciar trshIt en el constructor después de cada variable debería funcionar.

    También, como CO2TrashEmissions es constante por que se ve (y tal vez myPlot demasiado?), probablemente, usted debe declarar lo estático y definitivo para evitar que cambiar. A pesar de que no impide que las modificaciones a los elementos mismos.

    private static final double[] CO2TrashEmissions = {184.0, 25.6, 46.6, 165.8};
    //Fields....
    boolean[] trshIt;
    
    //constructor
    CO2FromWaste(int crust, boolean p, boolean pl, boolean gl, boolean ca)
    {
        myPlot = 1018.0;
        myCrust = crust;
        myP = p;
        myPl = pl;
        myGl = gl;
        myCa = ca;
    
        trshIt = new boolean[]{myP, myPla, myGl, myCa};
    }

    También, tenga en cuenta que, dado que los valores booleanos son literales, el cambio de uno de sus mi* variables no cambian con el correspondiente elemento de la matriz que puede ser un problema dependiendo de lo que está haciendo tu programa.

    • Estoy principalmente la utilización de arrayLists para calcular e imprimir la información. Las variables booleanas hizo cambiar como se debe. No creo que se me permite utilizar términos como static y final en la secuencia de comandos, ya que no fue enseñado a mí todavía. Pero confía en mí, si yo pudiera, me hubiera sido por todas partes. El más fácil de usar las cosas de la mejor. Voy a hacer referencia a este si estoy en una situación similar y estoy construyendo secuencias de comandos para la base de ella.
    • Quiero decir fuera del constructor al modificar los campos, usando los métodos para manipular el objeto, Que está obligado a aprender acerca de ella más adelante en el curso. Buena suerte y no dudes en aprender más de lo que usted necesita.
  3. 0

    Alguna razón usted no puede hacer esto:

    //private variables
    boolean myP;
    boolean myPla;
    boolean myGl;
    boolean myCa;
    
    double myPlot;
    int myCrust;
    
    double myReduct;
    double myNet;
    double myGross;
    
    boolean [] trshIt;
    double [] CO2TrashEmissions;
    
    //constructor
    CO2FromWaste(int crust, boolean p, boolean pl, boolean gl, boolean ca){
    
        myPlot = 1018.0;
        myCrust = crust;
        myP = p;
        myPl = pl;
        myGl = gl;
        myCa = ca;
        trshIt = new boolean[4];
        trshIt[0] = myP; trshIt[1] = myPla;
        trshIt[2] = myGl; trshIt[3] = myCa;
    
        double [] CO2TrashEmissions = {184.0, 25.6, 46.6, 165.8};
    }

    En Java, tipos primitivos (int, char, boolean) son asignados por valor, así que si usted

    boolean b = true;
    boolean[] a = { b };
    b = false;
    
    System.out.println( ( a[0] == true ) ? "true" : "false" );

    imprimirá «verdadero» porque b = false; no cambia el valor en el a array (porque no almacenar el «puntero» para b, pero el valor que estaba en b.

    • Hmm, me hizo a su estilo y me las arreglé para conseguir que pasa que el primer error. Pero la ejecución de la secuencia de comandos ahora me aparece un error de que trshIt es nulo cuando me pregunte por la duración de la misma en un bucle for. Incluso mirando el valor de la misma en el depurador informa de que es nulo. Nunca he tenido nada igual que antes. Los pensamientos? Gracias por ayudarme a través del error 1 por el camino.
    • Puede ser nulo sólo si este constructor no es llamado. ¿Tienes más de un constructor o utilizas new CO2FromWaste() en lugar de new CO2FromWaste( crust, p, pl, gl, ca ) en cualquier lugar?
    • Yo tengo un solo constructor, y he usado nuevo CO2FromWaste con los parámetros varias veces como objetos en un arraylist.
    • Usted debe aceptar esta respuesta, y después de otra pregunta con el código que está causando el problema.
    • No te preocupes, Es averiguar ahora. Gracias user1000959. (no se puede hacer la respuesta útil de la cosa todavía)

Dejar respuesta

Please enter your comment!
Please enter your name here