Array werte speichern und für berechnungen nutzen

Guten Abend liebes Forum =)

Ich habe vor kurzem damit angefangen eine Simulation zur wärmeausbreitung in einem Raum zu Programmieren.

Dazu habe ich ein 3D Array erstellt. An der Stelle zum zum Beispiel [3 , 3 , 3 ] befindet sich die Heizung bzw Die Temperatur von 55 grad.

Mit Hilfe der Formel bestimme ich nun die wärmeabgabe an die Felder links rechts oben und unten von dem feld [3,3,3]. Nun haben diese felder nach dem 1 durchlauf zum beispiel 2 grad schon.

Nun muss ich diese Werte aber irgendwie Abspeichern um die Werte im 2. durchlauf nutzen nutzen zu können. diese ganzen neuen werte muessen dann WIEDER gespeichert werden fuer alle nachfolgende berchnungen. Im endeffekt stecken sich somit irgendwann alle felder nacheinander mit der wärme an bis zum beispie zum zeitpunktl t = 100.

ich habe aber keine Ahnung wie ich das machen soll.

Vll kann mir einer schnell ein fallbeispiel geben worauf ich aufbauen kann. =)

liebe grüße
 

Elenteria

Bekanntes Mitglied
Spricht irgendwas dagegen die neuen Werte direkt an die Position des Arrays zu speichern?
also:
Java:
array[x][y][y] = calculateTemprature();
 

nvidia

Bekanntes Mitglied
Spricht irgendwas dagegen die neuen Werte direkt an die Position des Arrays zu speichern? [...]

Wahrscheinlich, es ist anzunehmen das die Berechnung eine bestimmte Umgebung der Werte verwendet um einen neuen Temperaturwert zu errechnen, würde das in die Quelldaten geschrieben werden änderten sich dadurch ständig die Basiswerte.

[...]Nun muss ich diese Werte aber irgendwie Abspeichern um die Werte im 2. durchlauf nutzen nutzen zu können. [...]

Dann tu das doch, d.h. du arbeitest mit zwei 3D-Feldern A und B, dann schreibst die Berechnungen auf Basis von A in Feld B, bist du mit dem Durchgang fertig wird B die neue Basis und du überschreibst alle Werte in A mit den Werten aus dem nächten Durchgang. Z.B. das Game of Life funktioniert ähnlich.
 
Danke für eure antworten ich glaub nvidia du meinst das rictig wenn du sagst das die berechnung eine bestimmte umgebung der werte verwendet. ich berechne halt bestimmte felder im array. diese berechneten felder werden dann immer in den naechsten schleifendurchgängen benötigt fuer die weitere berechnungen neuer felder . Ich glaube ich versteh das noch nicht ganz !!! :-/

ich habe jetzt 2 arrays.

raumtemp[][][]; und
raumtempNeu[][][];

1 Durchlauf: werte für raumtempNeu werden berechnet.
ab 2 Durchlauf (if zeit > 0 ) raumtemp = raumtempNeu.

oder wie muss ich das machen ich bin verwirrt irgendwie :-/

Ich glaub den sinn verstehe ich ich habe ein array dann berechne ich neue werte. diese neuen werte muessen dann die neue basis werden mit denen im nächsten durchlauf gerechnet wird. dann ist der 3. schleifendurchgang dran da muss ja wieder das selbe passieren also wieder gewechselt werden und und und.

im moment sieht das bei mir so aus ..ich weiß das ist warscheinlich noch käse aber vll kann mir ja jemand von euch nochmal helfen =)


Code:
raumTemp[0][3][0]=100;
           
             while(zeit<5){
                 System.out.println("Temperatur Schritt " + zeit);
                 if(zeit>0){
                     raumTemp=raumTempneu;
                 }
               
               
               
             for(int posX = 0; posX < x; posX++) {
    
                 for(int posY = 0; posY < y; posY++) {
         
                     for(int posZ = 0; posZ < z; posZ++) {
                       
                         //System.out.print("Heizung: (" + raumTempneu[0][3][0]   + ")");
               
                         // Hier berechnung der ganzen felder
                       
                         //Ecken unten
                         if(posX ==0 && posY==0 && posZ==0){
                       
                             raumTempneu[posX][posY][posZ] = raumTemp[posX][posY][posZ]-temperaturleitfähigkeit*(3*raumTemp[posX][posY][posZ]-raumTemp[posX+1][posY][posZ]-raumTemp[posX][posY+1][posZ]-raumTemp[posX][posY][posZ+1]);
                             System.out.print("(" + raumTempneu[posX][posY][posZ]   + ")");
                           
                         }
                             else if(posX ==0 && posY==4 && posZ==0){
                                // System.out.print("HierHierHier(" + raumTempneu[0][3][0]   + ")");
                                 raumTempneu[posX][posY][posZ] = raumTemp[posX][posY][posZ]-temperaturleitfähigkeit*(3*raumTemp[posX][posY][posZ]-raumTemp[posX+1][posY][posZ]-raumTemp[posX][posY-1][posZ]-raumTemp[posX][posY][posZ+1]);
                                 System.out.print("(" + raumTempneu[posX][posY][posZ]   + ")");
                               
                             }
                       
                         else if(posX ==4 && posY==0 && posZ==0){
                               
                                 raumTempneu[posX][posY][posZ] = raumTemp[posX][posY][posZ]-temperaturleitfähigkeit*(3*raumTemp[posX][posY][posZ]-raumTemp[posX-1][posY][posZ]-raumTemp[posX][posY+1][posZ]-raumTemp[posX][posY][posZ+1]);
                                 System.out.print("(" + raumTempneu[posX][posY][posZ]   + ")");
                             }
                       
                         else if(posX ==4 && posY==4 && posZ==0){
                               
                                 raumTempneu[posX][posY][posZ] = raumTemp[posX][posY][posZ]-temperaturleitfähigkeit*(3*raumTemp[posX][posY][posZ]-raumTemp[posX-1][posY][posZ]-raumTemp[posX][posY-1][posZ]-raumTemp[posX][posY][posZ+1]);
                                 System.out.print("(" + raumTempneu[posX][posY][posZ]   + ")");
                             }
                       
                         //Ecken oben
                         else if(posX ==0 && posY==0 && posZ==2){
                       
                             raumTempneu[posX][posY][posZ] = raumTemp[posX][posY][posZ]-temperaturleitfähigkeit*(3*raumTemp[posX][posY][posZ]-raumTemp[posX+1][posY][posZ]-raumTemp[posX][posY+1][posZ]-raumTemp[posX][posY][posZ-1]);
                             System.out.print("(" + raumTempneu[posX][posY][posZ]   + ")");
                           
                         }
                             else if(posX ==0 && posY==4 && posZ==2){
                               
                                 raumTempneu[posX][posY][posZ] = raumTemp[posX][posY][posZ]-temperaturleitfähigkeit*(3*raumTemp[posX][posY][posZ]-raumTemp[posX+1][posY][posZ]-raumTemp[posX][posY-1][posZ]-raumTemp[posX][posY][posZ-1]);
                                 System.out.print("(" + raumTempneu[posX][posY][posZ]   + ")");
                             }

                       
                                                                .
                                                                .
                                                                .

                       
                         //Allgemein Decke
                         else if(posX > 0 && posX<4 && posY > 0 && posY < 4 && posZ==2){
                           
                             raumTempneu[posX][posY][posZ] = raumTemp[posX][posY][posZ]-temperaturleitfähigkeit*(5*raumTemp[posX][posY][posZ]-raumTemp[posX+1][posY][posZ]-raumTemp[posX-1][posY][posZ]-raumTemp[posX][posY+1][posZ]-raumTemp[posX][posY-1][posZ]-raumTemp[posX][posY][posZ-1]);
                              System.out.print("(" + raumTempneu[posX][posY][posZ]   + ")");
                         }
                       
                         //Allgemein Innen
                         else if(posX > 0 && posX<4 && posY >0 && posY < 4 && posZ>0 && posZ<2){
                           
                             raumTempneu[posX][posY][posZ] = raumTemp[posX][posY][posZ]-temperaturleitfähigkeit*(6*raumTemp[posX][posY][posZ]-raumTemp[posX+1][posY][posZ]-raumTemp[posX-1][posY][posZ]-raumTemp[posX][posY+1][posZ]-raumTemp[posX][posY-1][posZ]-raumTemp[posX][posY][posZ+1]-raumTemp[posX][posY][posZ-1]);
                              System.out.print("(" + raumTempneu[posX][posY][posZ]   + ")");
                            
                           
                         }
                       
                       
                       
                       
                         //System.out.print("(" + raumTemp[posX][posY][posZ]   + ")");
                     }
                      System.out.println(" ");
                 }
              
          
           
         }
             zeit++;
           
    }
           
    }
}

Also das array feld 0 3 0 hat den wert 100(heizungstemperatur). alle anderen sind 0. Nun werden von JEDEM feld immer die direkt angrenzenden felder berechnet rechts links oben und unten usw. ( die wärme breitet sich aus von feld zu feld)

da wo das feld ist mit dem wert 100 sind nun die angrenzenden felder berechnet worden und haben nun auch einen wert ueber 0.

im nächsten schleifendurchgang muessen diese werte halt MITGENOMMEN werden damit von den grade neu berechneten feldern AUCH die angrenzenden felder neu berechnet werden können usw usw . boah ich hoffe das ist irgendwie verständlich :-/

also kurz ausgedrückt

array mit werten

berechnung neuer werte

neue werte speichern und mit diesen weiter rechnen

diese neuen werte speichern und wieder mit weiter rechnen usw

könnt ihr mir helfen ? :-o
 

Elenteria

Bekanntes Mitglied
array mit werten

berechnung neuer werte

neue werte speichern und mit diesen weiter rechnen

diese neuen werte speichern und wieder mit weiter rechnen usw

Ich würde dafür ne Methode calculateTemp schreiben welche ein Array mit den Aktuellen werten bekommen. In dieser Methode legst du eine weiteres Array an in dem die Ergebnisse gspeichert werden. Das Array gibst du dann zurück um damit weiter rechnet zu können.
in etwa so

Java:
public int[][][] calcTemp(int[][][] raumtemp) {
  int[][][] ergebnis = new int[a][b][c] // kenn die genaue größe deines arrays nicht.
  for(int x = 0; x < raumtemp.length; x++) {
    for(int y = 0; y < raumtemp[x].length; y++)  {
      for(int z = 0; z < raumtemp[x][y].length; z++) {
         ergebnis[x][y][z] = calculateSomehow() // wie die genaue berechnung ist weißt du selber bessern ;_)
      }
    }
  }
  return ergebnis;
}

und der aufruf läuft dann so
Java:
int[][][] raumtemp = initRaumtemp(); // Initiale Werte festlegen
while(repeat) {
  raumtemp = calcTemp(raumtemp)
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
L Nur Bestimmte Werte aus einem Array in ein anderes Speichern Java Basics - Anfänger-Themen 11
D Werte aus einem BinärBaum in einem Array speichern Java Basics - Anfänger-Themen 1
C Array kopieren und nur bestimmte Werte speichern Java Basics - Anfänger-Themen 6
C Array - Werte speichern und ausgeben Java Basics - Anfänger-Themen 5
D werte in array speichern Java Basics - Anfänger-Themen 26
S Char Array Werte in short variablen speichern Java Basics - Anfänger-Themen 4
X Errechte Werte automatisch in einem Array speichern Java Basics - Anfänger-Themen 11
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
Chris.089 2 Werte im Array tauschen Java Basics - Anfänger-Themen 6
Igig1 Wie lasse ich dir Werte in einem Array zusammenrücken? Java Basics - Anfänger-Themen 4
Igig1 Welche Werte sind als default Werte in einem Array, der als Datentyp eine Klasse hat? Java Basics - Anfänger-Themen 1
sashady ursprüngliche Array-Werte bei erneutem Aufruf? Java Basics - Anfänger-Themen 7
E In Array Werte einfügen? Java Basics - Anfänger-Themen 5
HighLife Bestimmte Werte aus Array zählen Java Basics - Anfänger-Themen 15
G Array Werte addieren Java Basics - Anfänger-Themen 4
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
C Array-Werte werden gemischt, ohne Logik Java Basics - Anfänger-Themen 2
L 2 Dimensional Array werte überschreiben Java Basics - Anfänger-Themen 1
K Array alle Werte aufsummieren und ausgeben Java Basics - Anfänger-Themen 6
J Neue Werte in ein Array hinzugeben Java Basics - Anfänger-Themen 8
L Wie frage ich ab, ob in einem Array, Werte doppelt vorkommen? Java Basics - Anfänger-Themen 4
Kirby.exe Fehlende Int Werte aus Array mit streams finden Java Basics - Anfänger-Themen 19
Ellachen55 Wie nach häufigste Werte im Array suchen? Java Basics - Anfänger-Themen 2
B Werte aus einem Unterprogramm in ein Array schreiben Java Basics - Anfänger-Themen 2
M prüfen ob alle array werte gleich sind Java Basics - Anfänger-Themen 27
L Werte zufällig aus Array zurückgeben Java Basics - Anfänger-Themen 15
L Gleiche Werte aus Array aussortieren Java Basics - Anfänger-Themen 5
L Gleiche Werte im Array hochzählen Java Basics - Anfänger-Themen 4
N Array-Werte zusammenfassen Java Basics - Anfänger-Themen 20
J Array Werte benutzen Java Basics - Anfänger-Themen 16
D Erste Schritte Array Werte an Methode übergeben Java Basics - Anfänger-Themen 6
S Array Werte vertauschen Java Basics - Anfänger-Themen 2
D Array Werte einlesen und ausgeben? Java Basics - Anfänger-Themen 8
F Werte in 2D-Array mit anderem 2D-Array überschreiben Java Basics - Anfänger-Themen 2
R Werte aus Array addieren und Mittelwert bilden Java Basics - Anfänger-Themen 2
S Werte in Array einlesen Java Basics - Anfänger-Themen 2
B Array Werte zuweisen Java Basics - Anfänger-Themen 4
K Datentypen Werte im Array vertauschen Java Basics - Anfänger-Themen 11
J Variablen Doppelte Werte in Int Array Java Basics - Anfänger-Themen 10
stylegangsta Anzahl der gefunden array Werte ausgeben Java Basics - Anfänger-Themen 6
J Integer-Werte in Array ein- bzw. auslesen Java Basics - Anfänger-Themen 7
C Werte im Array sortieren Java Basics - Anfänger-Themen 5
A Array in Subklasse - Werte aus Superklasse Java Basics - Anfänger-Themen 4
D Array in Endlosschleife überschreibt vorherige Werte Java Basics - Anfänger-Themen 4
T Array soll Werte aufnehmen Java Basics - Anfänger-Themen 2
J Werte der For-Schleife in Array abspeichern Java Basics - Anfänger-Themen 1
L [ARRAY] Werden hier die Indezes oder die Werte vergliechen? Java Basics - Anfänger-Themen 4
C Rekursion auf einem Array(negative werte addieren) Java Basics - Anfänger-Themen 4
B Doppelte Werte aus Array entfernen ohne Import - Algorithmus Java Basics - Anfänger-Themen 5
E Array Anzahl verschiedener Werte ausgeben Java Basics - Anfänger-Themen 3
M Kann einen Array nicht füllen, im Nachhinein nur "null"-Werte Java Basics - Anfänger-Themen 11
D Neue Array übernimmt Werte des alten nicht Java Basics - Anfänger-Themen 5
C Erste Schritte Array Werte Ausgeben Probleme mit variable Java Basics - Anfänger-Themen 21
S Array befüllen & auf doppelte werte prüfen Java Basics - Anfänger-Themen 6
M In Testklasse einem Array Werte übergeben Java Basics - Anfänger-Themen 6
B Werte über Scanner in ein 3 dim String Array schreiben Java Basics - Anfänger-Themen 7
F Einzelne Werte aus einem Array vergleichen? Java Basics - Anfänger-Themen 8
D Array auslesen und und Werte in ein anderes array anlegen Java Basics - Anfänger-Themen 5
J Integer Werte in Array einlesen Java Basics - Anfänger-Themen 6
C Erste Schritte Integer Werte in Array kopieren Java Basics - Anfänger-Themen 21
T Methoden in einer array werte vergleichen Java Basics - Anfänger-Themen 6
S Werte aus Array auslesen über Variableninhalt Java Basics - Anfänger-Themen 2
S Einzelne Werte von Array-Feld löschen Java Basics - Anfänger-Themen 15
T Beliebig viele Werte in Array zwischenspeichern Java Basics - Anfänger-Themen 15
K Erste Schritte Array mit 3 werte in eine Zeile -- Hilfe! Java Basics - Anfänger-Themen 2
T Aus object Array Double Werte ziehen Java Basics - Anfänger-Themen 10
2 Alle Werte die mit n Würfeln mit m Seiten geworfen werden können in ein n Dimensionales Array Java Basics - Anfänger-Themen 15
B Werte aus JTextArea in einem String Array ablegen Java Basics - Anfänger-Themen 4
Spin Array werte zusammenrechnen Java Basics - Anfänger-Themen 18
R array werte ausgeben/zugreifen Java Basics - Anfänger-Themen 8
B Datentypen Werte in einen Array einlesen und danach die beiden höchsten Werte wieder ausgeben Java Basics - Anfänger-Themen 3
B Werte aus einem Array umwandeln Java Basics - Anfänger-Themen 10
J Array Werte subtrahieren Java Basics - Anfänger-Themen 8
J int[] array Werte einem int übergeben Java Basics - Anfänger-Themen 9
M Byte Array: Werte größer 127? Java Basics - Anfänger-Themen 11
J Rekursion über int und array gibt zu wenige Werte zurück Java Basics - Anfänger-Themen 5
P doppelte Werte im Array ausgeben. Java Basics - Anfänger-Themen 4
P Werte im Array abwechselnd ausgeben Java Basics - Anfänger-Themen 4
G Array-Werte Zaehlung Java Basics - Anfänger-Themen 14
G Zählen gleiche Werte in Array Java Basics - Anfänger-Themen 5
7 Array speichert Werte nicht? NullPointerException Java Basics - Anfänger-Themen 2
M an String-Array weitere Werte anhängen Java Basics - Anfänger-Themen 22
G array werte in array2 schreiben Java Basics - Anfänger-Themen 6
G Werte im Array zählen Java Basics - Anfänger-Themen 13
G static array liefert falsche Werte zurück Java Basics - Anfänger-Themen 2
K Neue Werte für gleiche Array-Indexe Java Basics - Anfänger-Themen 16
D Werte in Array speicher Java Basics - Anfänger-Themen 8
J Verhindern das Werte in einem Array verloren gehen Java Basics - Anfänger-Themen 13
G Array werte auslesen Java Basics - Anfänger-Themen 6
F Array - Vorkommen der einzelnen Werte ausgeben Java Basics - Anfänger-Themen 8
G Dem array automatisch werte von -10 bis +10 zuweisen Java Basics - Anfänger-Themen 6
S Grösste Werte im Array! Java Basics - Anfänger-Themen 4
F Einem Array Werte zuweisen. (illegal start of expression) Java Basics - Anfänger-Themen 4
S Array Werte inkrem. Java Basics - Anfänger-Themen 2
P Aus Array Werte rauslesen und in Kuchendiagramm abbilden Java Basics - Anfänger-Themen 7
N Mehrere Werte gleichzeitig in ein Array schreiben? Java Basics - Anfänger-Themen 7
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben