Initialisation du tableau avec des valeurs de paramètre de constructeur - Impossible d'initialiser?
J'ai posé cette même question sur javaprogrammingforums.com mais il semble que leur site web est en bas à droite maintenant. Donc je ne pouvais pas voir ce que les réponses (le cas échéant) que j'ai eu. De toute façon, je suis mal bloqué sur ce Java HW affectation. Ce que j'ai jusqu'à présent semble bon en termes de réalisation, maintenant, il suffit d'obtenir les valeurs de droite à apparaître. Faire semblant j'ai ceci:
(Ce n'est qu'une partie de la 2e classe de la deux avec le constructeur, l'autre est le "testeur")
//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;
}
Mon problème est que booléen tableau, trshIt. Depuis que je suis en train de monter des variables dans le tableau qui n'ont pas été initialisées encore, il donne à ces variables des valeurs par défaut false. Si je l'ai mis dans le constructeur d'abord, puis j'obtiens une erreur se plaindre que la variable trshIt ne peut pas être trouvé, pointant vers l'instance que je fais appel à cette variable. J'ai donc essayé différentes formes dans différents domaines, et je suis comme pris au piège dans un labyrinthe droit maintenant d'essayer d'obtenir que le tableau fonctionne correctement. J'ai besoin de toute l'aide que je peux obtenir. Des idées?
- Ne pas poster la même question sur plusieurs endroits. Aussi, vous avez ajouté de nombreux tags, sauf le plus important: "Java"...
- La messagerie unifiée. Bien l'autre forum, j'ai été sur est bas, c'est mon premier thread ici...Et je vais fixer les balises.
Vous devez vous connecter pour publier un commentaire.
Déclarer
trshIt
en tant que membre de la classe, mais l'initialiser dans le constructeur, comme ceci:trshIt = new boolean[] {myP, myPla, myGl, myCa};
boolean[] a = {true, false};
mais pasboolean[] a; a = {true, false};
Cela ne fonctionne pas car trshIt va obtenir ses valeurs dans les champs avant qu'ils sont initialisées dans le constructeur.
Initialisation trshIt dans le constructeur après toutes les autres variables doivent travailler.
Aussi, comme CO2TrashEmissions est constante par les regards de celui-ci (et peut-être myPlot trop?), vous devriez probablement déclarer static et final pour l'empêcher de changer. Bien que ce ne sera pas éviter d'apporter des modifications aux éléments eux-mêmes.
Il est également à noter que, depuis les booléens sont des littéraux, le changement de l'un de mes* variables ne va pas changer l'élément correspondant dans le tableau qui peut être un problème selon ce que votre programme est en train de faire.
Une raison quelconque vous ne pouvez pas faire ceci:
En Java, primitifs (int, char, boolean) sont affectés par valeur, donc si vous ne
imprimé "vrai" parce que
b = false;
ne change pas la valeur de laa
array (car il ne stocke pas le "pointeur" àb
, mais la valeur qui a été dansb
.new CO2FromWaste()
au lieu denew CO2FromWaste( crust, p, pl, gl, ca )
n'importe où?