Hallo! Wir haben folgendes Problem: WIr möchten die folgenden Arrays erstellen und Sie im nachhinein addieren. Leider bekommen wir nur lauter Fehlermeldungen bzw. als Ergebniss wird nur einen Buchstabenzahlenkombination ausgeworfen. Was machen wir falsch?
Java:
this.moment1 =newdouble[gesa];this.moment2 =newdouble[gesa];for(int i=0; i<gesa; i++){this.moment1[i]=(Hdges* i *((gesh/100)+(dest/100)));this.moment2[i]=(Hdgesh*((dest/100)+(gesh/100))*(i+1));this.moment[i]= moment1[i]+moment2[i];System.out.println("Moment"+ i +" = "+ moment);}
1. Bitte überlegt euch nächstes mal wie ihr euren Post angeht. Es fehlen ein paar Informationen.. was für Exceptions? Wo ist der weitere Code?
Das nur zahlen und Buchstaben ausgegeben werden liegt denke ich daran, dass ihr euch die Speicheradresse ausgeben lasst. moment ist eine Array, denke ich? mit System.out.print(array) lasst ihr euch nur die Speicheradresse ausgeben. Wenn ihr das Element ausgeben lassen wollt, müsst ihr moment nehmen und in einer For-Schleife / For-each durchlaufen lassen.
DAnke vorab für die Antworten.
Hier die Fehlermeldungen:
Java:
java.lang.NullPointerException
at berechnung.LaMaGebaeude.berechne(LaMaGebaeude.java:280)
at berechnung.LaMaAnwendungsfenster.actionPerformed(LaMaAnwendungsfenster.java:426)
at javax.swing.AbstractButton.fireActionPerformed(UnknownSource)
at javax.swing.AbstractButton$Handler.actionPerformed(UnknownSource)
at javax.swing.DefaultButtonModel.fireActionPerformed(UnknownSource)
at javax.swing.DefaultButtonModel.setPressed(UnknownSource)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(UnknownSource)
at java.awt.Component.processMouseEvent(UnknownSource)
at javax.swing.JComponent.processMouseEvent(UnknownSource)
at java.awt.Component.processEvent(UnknownSource)
at java.awt.Container.processEvent(UnknownSource)
at java.awt.Component.dispatchEventImpl(UnknownSource)
at java.awt.Container.dispatchEventImpl(UnknownSource)
at java.awt.Component.dispatchEvent(UnknownSource)
at java.awt.LightweightDispatcher.retargetMouseEvent(UnknownSource)
at java.awt.LightweightDispatcher.processMouseEvent(UnknownSource)
at java.awt.LightweightDispatcher.dispatchEvent(UnknownSource)
at java.awt.Container.dispatchEventImpl(UnknownSource)
at java.awt.Window.dispatchEventImpl(UnknownSource)
at java.awt.Component.dispatchEvent(UnknownSource)
at java.awt.EventQueue.dispatchEventImpl(UnknownSource)
at java.awt.EventQueue.access$500(UnknownSource)
at java.awt.EventQueue$3.run(UnknownSource)
at java.awt.EventQueue$3.run(UnknownSource)
at java.security.AccessController.doPrivileged(NativeMethod)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(UnknownSource)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(UnknownSource)
at java.awt.EventQueue$4.run(UnknownSource)
at java.awt.EventQueue$4.run(UnknownSource)
at java.security.AccessController.doPrivileged(NativeMethod)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(UnknownSource)
at java.awt.EventQueue.dispatchEvent(UnknownSource)
at java.awt.EventDispatchThread.pumpOneEventForFilters(UnknownSource)
at java.awt.EventDispatchThread.pumpEventsForFilter(UnknownSource)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(UnknownSource)
at java.awt.EventDispatchThread.pumpEvents(UnknownSource)
at java.awt.EventDispatchThread.pumpEvents(UnknownSource)
at java.awt.EventDispatchThread.run(UnknownSource)
Haben wir den Array denn richtig geschrieben?
Der Array soll soviele Stellen haben, wie "gesa" vorhanden sind. Dann möchten wir zwei einzelne Arrays erstellen momment1 und moment2 und dann sollen die einzelnen Werte wie folgt addiert werden: moment1[0]+moment2[0] = moment[0] usw...
In dieser Zeile wird nur die Berechnung aufgerufen. Dieser Fehler ist aber erst da, seitdem wir den Array geschrieben haben. Wenn wir ihn auskommentieren, dann sind die Fehler weg:
Z:426: this.LaMa.berechne();
Danke! Das Problem ist gelöst.
Jetzt stellt sich uns aber noch das folgende Problem:
Wie kann man beim zweiten, dritten, usw. Durchlauf der Schleife die Werte der vorherigen Durchläufe aufaddieren:
moment1[0] = moment1 [0] (1. Durchlauf)
moment1[1] = moment1[0] + moment1[1] (2.Durchlauf)
moment1[2] = moment1[0] + moment1[1] + moment1[2] (3.Durchlauf)
...
Java:
this.moment1 =newdouble[gesa];this.moment2 =newdouble[gesa];this.moment =newdouble[gesa];for(int i=0; i<gesa; i++){this.moment1[i]=(Hdges* i *((gesh/100)+(dest/100)));this.moment2[i]=(Hdgesh*((dest/100)+(gesh/100))*(i+1));this.moment[i]= moment1[i]+moment2[i];System.out.println("Moment 1-"+ i +" = "+ moment1[i]);System.out.println("Moment 2-"+ i +" = "+ moment2[i]);}
this.moment1[i]=(Hdges* i *((gesh/100)+(dest/100)))+ moment[i-1];
Das musst du aber mit einer if-abfrage regulieren da wenn i = 0 ist moment[i-1] = moment[-1] entspricht und das eine ArrayOutOfBoundsException werfen wird.