Initialisierung der array mit Werten vom Konstruktor-parameter - Unmöglich zu initialisieren?
Fragte ich die gleiche Frage auf javaprogrammingforums.com aber es scheint, Ihre website ist unten rechts jetzt. So konnte ich nicht sehen, was die Antworten (wenn überhaupt) hab ich auch bekommen. Na ja, ich bin schlecht stecken, die auf diese Java-HW-Zuordnung. Was ich bisher sieht gut aus in Bezug auf die Fertigstellung, jetzt ist es nur immer die richtigen Werte angezeigt werden. Behaupten, ich habe dieses:
(Dies ist nur ein Teil der 2. Klasse von den beiden mit dem Konstruktor, der andere ist der "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;
}
Mein Problem ist, dass boolean-array, trshIt. Da ich das einfügen von Variablen in dem array noch nicht initialisiert wurde doch, es gibt jene Variablen default-Werte sind falsch. Wenn ich es im Konstruktor zuerst, dann bekomme ich eine Fehlermeldung beschwert sich, dass die variable trshIt nicht gefunden werden können; verweist auf die Instanz, die ich fordere, die variable. So habe ich versucht, verschiedene Formen in verschiedenen Bereichen und ich bin wie in einem Labyrinth gefangen ist jetzt zu versuchen, um das array korrekt funktioniert. Ich brauche alle Hilfe die ich bekommen kann. Ideen?
Um. Auch die anderen forum wurde ich auf ist nach unten, dies ist mein Erster thread hier...Und ich mache den tags.
InformationsquelleAutor Michael | 2012-02-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erklären
trshIt
als Mitglied der Klasse, aber initialisieren Sie im Konstruktor, wie folgt:Sie müssen möglicherweise
trshIt = new boolean[] {myP, myPla, myGl, myCa};
Sie können die Tastaturkürzel verwenden Sie die array-Schreibweise nur, wenn Sie die variable deklariert haben, dh Sie können tun
boolean[] a = {true, false};
aber nichtboolean[] a; a = {true, false};
Ooops. Ok. Bearbeitet, um das zu beheben.
ES HAT GEKLAPPT! Obwohl ich hatte, zu ändern boolean [] trshIt; bis boolean [] trshIt = new boolean [4]; und Hinzugefügt, was Sie in durch die Zuordnung jeder index der variable im Konstruktor. Endlich die Magie, die auf dem terminal.
InformationsquelleAutor Diego
Es funktioniert nicht, weil trshIt erhält seine Werte aus den Feldern, bevor Sie initialisiert im Konstruktor.
Initialisierung trshIt in den Konstruktor, wenn alle anderen Variablen funktionieren sollte.
Auch, wie CO2TrashEmissions konstant ist vom Aussehen des es (und vielleicht myPlot auch?), Sie sollte wohl erklären, static und final, um zu verhindern, dass es zu ändern. Obwohl es nicht verhindern, dass änderungen an den Elementen selbst.
Beachten Sie auch, dass da Boolesche Werte sind Literale, die änderung Ihrer meiner* - Variablen nicht ändern, wird das entsprechende element im array, das kann ein problem sein, je nachdem, was Ihr Programm macht.
Ich meinte außerhalb des Konstruktors beim ändern der Felder, die über Methoden zum Bearbeiten des Objekts-Sie sind verpflichtet, Sie zu erfahren, Sie später in Ihrem Kurs. Viel Glück und zögere nicht, um mehr zu erfahren, als Sie müssen.
InformationsquelleAutor Hedja
Irgendeinem Grund Sie nicht tun kann:
In Java-primitive (int, char, boolean) zugewiesen sind, durch den Wert, wenn Sie so tun,
wird print "wahr", weil
b = false;
nicht ändern Sie den Wert in dera
array (weil es nicht speichern Sie die "Zeiger" zub
, aber der Wert war inb
.Es kann null sein, nur wenn dieser spezielle Konstruktor wird nicht aufgerufen. Sie haben mehr als einen Konstruktor oder verwenden Sie
new CO2FromWaste()
stattnew CO2FromWaste( crust, p, pl, gl, ca )
überall?Ich habe nur einen Konstruktor, und ich habe neue CO2FromWaste mit den Parametern mehrmals als Objekte in einer arraylist.
Sie sollten akzeptieren, diese Antwort, und nach einer anderen Frage mit dem code, der die Ursache des neuen Problems.
Keine Sorge, Es herauszufinden, jetzt. Danke user1000959. (nicht tun können, die nützliche Antwort, was noch)
InformationsquelleAutor scibuff