Zahlen speichern

Status
Nicht offen für weitere Antworten.

eggi1981

Mitglied
Hallo,

ich bin blutiger Anfänger, deshalb kenne ich auch nicht besonders viele
Fachausdrücke. Darum entschuldige ich mich schon mal für falsche Aussagen meinerseits.

Ich habe ein Programm geschrieben, welches einen Zylinder in zweidimensionale Quadrate aufteilt und die vier Koordinaten jedes einzelnen Quadrates berechnet.
Danach habe ich mir gedacht es wäre schön wenn mein Programm nicht auf einen kreisrunden Querschnitt beschränkt ist sondern durch vorher eingegebene Koordinaten,
welche durch eine Spline verbunden sind, jede beliebige Querschnittsform generiert.
Das habe ich in Prinzip auch geschafft aber dafür werden einige Schleifen immer wieder
durchlaufen, um die gleichen Hilfsgrößen zu bekommen was sehr sehr viel Zeit kostet (ca. eine halbe Stunde).
Ist es möglich die Hilfsgrößen einmal zu berechnen und danach zu speichern damit sie immer wieder abgerufen werden können(Die Hilfsgrößen sind mit einem Index versehen).

Danke im Vorraus.
 

diggaa1984

Top Contributor
wovon hängen diese hilfsgrößen ab, haben die ne abhängigkeit zum spline, sprich zum genutzten querschnitt, oder ist das wie zB. PI etwas konstantes, oder etwas was aus anderen spline-unabhängigen werten errechnet wird?!
 

Schandro

Top Contributor
Klar geht das. Mach ne Membervariable in der das Ergebniss gespeichert wird, solange nichts an den Sachen geändert wird von denen das Ergebniss abhängt kann immer die Membervariable zurückgegeben werden anstatt es neu zu berechnen. Beispielcode:

Java:
class A{

	private Koordinaten koordinaten;
	private int length;
	private boolean lengthChanged = true;
	
	public void setKoordinaten(Koordinaten koordinaten){
		this.koordinaten = koordinaten;
		lengthChanged = true;
	}
	
	public int getLength(){
		if(lengthChanged){
			// komplizierte Berechnung von length
			this.length = dasErgebnissDieserKompliziertenBerechnung
			lengthChanged = false;
		}
		return length;
	}
}
Ist nur ein Beispiel.

Wenn du mehrere Zwischenergebnisse speichern willst kannste entweder mehrere Membervariablen machen
oder (wegen dem von dir angedeuteten index) du machst en Array
 

eggi1981

Mitglied
Die Hilfsgrößen müssen berechnet werden, um die Splinefunktion zu bekommen und diese wollte ich nur einmal berechnen lassen und danach speichern und nach bedarf abfragen.
Es sind keine Konstanten wie PI.
 

eggi1981

Mitglied
Irgendwie kriege ich es einfach nicht hin. ich habe mal einer meiner Schleifen als Beispiel mit dran gehängt.


Code:
int Iterationsschritte=30;  //Anzahl der Iterationsschritte
int Schritt=0;
//Randbedingungen für die Iteration, welche bei jedem Schritt gültig sind  
m[0]=0; 
m[8]=0;

//Schleife für die Iteration
while(Schritt<Iterationsschritte)
{
	i=1;
	//Schleife um m[i] zu berechnen 
	while(i<(n-1))
	{	
		//Für den ersten Iterationsschritt ist es notwendig m[i+1] Null zu
		//setzen, da noch keiner berechnet wurde. Nach der ersten
		//Iteration wird der Wert aus dem vorherigen genommen und so eine 
		//immer größer werdene Genauigkeit erreicht.
		
		if (Schritt==1)
		{	
			m[i+1]=0;
		}
		
		m[i]=((c[i]-h[i-1]*m[i-1]-h[i]*m[i+1])*Math.pow(2*(h[i-1]+h[i]), -1));
		i++;
	}
	Schritt++;	
}

ich würde jetzt gerne jeden m -Wert nach seiner Berechnung speichern
 

Schandro

Top Contributor
Ist "m" eine Membervaraible oder hast du "m" lokal in der Methode angelegt? Wenn es eine Membervariable ist, dann wird das Ergebniss doch bereits abgespeichert.

Ansonsten gilt: Desto mehr Code du postest, desto mehr kann dir geholfen werden.

Übrigens: Variablen- und Methodennamen schreibt man im camelCase (d.h. 1. Buchstabe klein), Klassennamen im CamelCase
(siehe dazu die Java Coding Convention)
 

eggi1981

Mitglied
also m ist so deffiniert(siehe unten)...wie gesagt ich habe keine Ahnung von den Ausdrücken.
Code:
double[]m;
m=new double[n+1];
 

diggaa1984

Top Contributor
wieviel zeilen hat denn die klasse wo das alles drinsteht? :D

nicht das du uns erschlägst, aber vielleicht ist sie ja überschaubar und dann würde es helfen wenn du einfach die ganze Klasse mal in Java! - Tags packst
 

diggaa1984

Top Contributor
kannst mal bitte h und c auch nch angeben (die klassen) ... dann wirds komplett^^

edit: wollt schon gross text schreiben und code posten, aber is besser wenn ich weiss wie h und c aussehen
 

diggaa1984

Top Contributor
mal sehen was ich anrichten kann ^^

kannst mal noch grob zeigen, wie du m woanders nutzt und abfragst?!

EDIT: und aeh h und c werden nur intern von m benötigt? davon merkt man aussen nix!?
 

eggi1981

Mitglied
Also das ist wohl alles wo m noch gebraucht wird..
Danke schonmal
nein h nund c werden auch noch woanders benutzt
 
Zuletzt bearbeitet:

diggaa1984

Top Contributor
uff die Baustelle wird immer größer :D .. pass auf ich bau dir grad .. h m und c so um dass sie nur 1x berechnet werden ... so das bedeutet aber du musst an einer zentralen Stelle diese Berechnung anstoßen und schiebst dann einfach die Klasseninstanzen davon an die jeweilige Stellen wo sie gebraucht werden. Da machst dann nur sowas wie: m.getPolarkoordinate(index);

analog das noch für die Klasse Datenpunkte, die kannst ja mal noch reinschieben, weil diese betrifft es ja auch .. Alpha - Gamma sollen aber dann stets neu berechnet werden auf basis der vorher berechneten Daten in m h und c?!
 

diggaa1984

Top Contributor
so also .. h m und c wären nun konsistent zu meinem erdachten konzept, sehen aus wie folgt:

Java:
class h extends Polarkoordinaten {
	
    private double[] h;
    private int n;
    private int berechnen;
    
    public h (int berechnen, int n) {
	this.n = n;
	this.berechnen = berechnen;
	this.h = new double[n];
	calculateHValues();
    }
 
    
    private void calculateHValues() {
	int i=0;
	double phi_plus = 0;
	double phi = 0;
	    
	while (i < (n-1)) {
	    phi_plus = new Datenpunkte((i+1),1).getPolarkoordinaten(i+1); //fix Daten-Klasse
	    phi = new Datenpunkte((i),1).getPolarkoordinaten(i);//fix Daten-Klasse
		
	    h[i] = phi_plus - phi;
	    i++;
	}//while
	
	/* analog
	for (int i=0; i < (n-1); i++) {
	    <Berechnungen>
          }
	*/
    }//calculateHValues
    
    
    public double getPolarkoordinaten(int index) {
        return h[index];
    }
}
Java:
class c extends Polarkoordinaten {
	
    private h hValues;
    private double[] c;
    private int n;	    
    private int berechnen;
	
    public c (int berechnen, int n, h hValues) {
	this.hValues = hValues;
        this.n = n;
        this.berechnen = berechnen;
	this.c = new double[n];
	calculateCValues();
    }
 
    
    private void calculateCValues() {
	double r_plus;
        double r;
        double r_minus;
        double h_minus;
	double h;
	    
	int i=1;
	    
	while (i < (n-1)) {
	    h = hValues[i];
	    h_minus = hValues[i-1];
		
	    r_plus = new Datenpunkte((i+1),2).getPolarkoordinaten(i+1); //fix Konstruktor
	    r = new Datenpunkte((i),2).getPolarkoordinaten(i); //fix Konstruktor
	    r_minus = new Datenpunkte((i-1),2).getPolarkoordinaten(i-1); //fix Konstruktor
		
	    //kann man bestimmt noch besser schreiben, aber ich hab sie erstma übernommen
	    c[i] = (double) (6*Math.pow(h,-1)*(r_plus-r)-6*Math.pow(h_minus,-1)*(r-r_minus));
	    i++;
	}//while
	
	//wieder mit for-schleife lösbar, liest sich in meinen augen besser
    }//calculateCValues
    
    
    public double getPolarkoordinaten(int index) {
        return c[index];
    }
}
Java:
class m extends Polarkoordinaten {   
	
    //zentrale Stelle zum aendern, brauchst net erst im Code wuehlen	
    private static final int MAXSTEPS = 30; 	
	
    private h hValues;
    private c cValues;
    private double[] m;
    private int n;
    private int berechnen;
    
	
    public m (int berechnen, int n, h hValues, c cValues) {
	this.berechnen = berechnen;
	this.hValues = hValues;
	this.cValues = cValues;
	this.m = new double[n+1];
	calculateMValues();
    }
 
    
    private void calculateMValues() {
	double h;
	double h_minus;
	double c;
	int step = 0;
	int i = 0;
	    
	m[0] = 0;
	//m[2] = 0; ersetzt doch die Anweisung unten in der while-schleife oder? probier mal aus!
	m[n-1] = 0;
	    
	while (step < MAXSTEPS) {
	    i = 1;
		
	    while (i < (n-1)) {
	        c = cValues.getPolarkoordinaten(i);
		h = hValues.getPolarkoordinaten(i);
		h_minus = hValies.getPolarkoordinaten(i-1);
		  
		//laesst sich oben ersetzen!?
		if (step == 1)
		    m[i+1] = 0;
		
		m[i] = ((c-h_minus*m[i-1]-h*m[i+1])*Math.pow(2*(h_minus+h), -1));
		i++;
	    }//while
	    
	    step++;
	}//while
    }
    
    
    public double getPolarkoordinaten(int index) {
	return (double) m[index];
    }
}

so das würde bedeuten, deine Klasse Polarkoordinaten hat statt getPolarkoordinaten() nun eine Methode getPolarkoordinaten(int index). Das bedeutet natürlich das sämtliche Aufrufe der Werte über diese Methode gehen, und aber auch in Beta etc. angepasst werden müssen. An einer zentralen Stelle erstellst du einfach für h m und c je EINE Instanz. Der Konstruktor dieser Klassen kümmert ich um die initiale Berechnung er Werte. Danach brauchst nur noch mit getPolarkoordinaten(int index) arbeiten.

Die Datenpunkte-Klasse muss noch ähnlich wie h m und c umgebaut werden, damit mein Source klappt. Das hat dann wieder auch Änderungen in zB Alpha zur Folge. Dennoch macht es den Code äußerst lesbarer als vorher^^

Ich hab das nicht getestet oder dergleichen, ich hoffe das nicht allzuviele Fehler drin sind in den 3 Klassen. Sicherlich wird durch die neue Methode erstmal Eclipse oder wer auch immer meckern zwecks Oberklasse und Nutzung in Alpha, Beta etc. aber das musst eben fix anpassen, dann sollte das schon in etwa dem entsprechen was du gern wolltest ^^
 
Zuletzt bearbeitet:

diggaa1984

Top Contributor
sind schon recht viele Änderungen drin, aber so wird daraus n akzeptables Konzept, von den Einsparungen durch einmaliges Berechnen ganz zu schweigen ^^

Wenn dir noch etwas unklar sein sollte, frag ruhig nach, aber ich denk ich bin erstma im Bett :D

bis späda

edit: das berechnen im Konstruktor war mir net ganz klar, das wird wohl erst durch Datenklasse ersichtlich, schmeiss es raus, wo du es nich brauchst :D

beim Erstellen der Instanzen von h m und c .. erst h erstellen, dann an c übergeben, und die beiden dann an m übergeben, sollte denk ich klar sein :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
ansystin Teilerfremde Zahlen ausgeben + Zahlenausgabe speichern Java Basics - Anfänger-Themen 3
A Wie zwei zahlen in einer Variable speichern? Java Basics - Anfänger-Themen 7
F Zahlen aus Datei einlesen und in Array speichern Java Basics - Anfänger-Themen 2
B Mehrere Zahlen speichern Java Basics - Anfänger-Themen 60
T Lotto Zahlen in Array speichern Java Basics - Anfänger-Themen 2
B Datentypen Test float und double speichern Zahlen nur ungefähr Java Basics - Anfänger-Themen 4
M Zahlen als Bytes in eine Datei speichern, daraus wieder auslesen Java Basics - Anfänger-Themen 2
M Zahlen im Form von 00001 speichern Java Basics - Anfänger-Themen 6
A Klassen Klasse um einen Wert zu vier Zahlen zu speichern Java Basics - Anfänger-Themen 7
T Zahlen in Array speichern und ausgeben Java Basics - Anfänger-Themen 14
G Zahlen in zufälliger Reihenfolge ausgeben/speichern. Java Basics - Anfänger-Themen 2
S Zahlen in Array speichern und addieren Java Basics - Anfänger-Themen 4
P String aus Zahlen auslesen und in einem Array speichern Java Basics - Anfänger-Themen 3
T Große Zahlen aufgesplittet in verketteter Liste speichern Java Basics - Anfänger-Themen 4
K Enum Römische Zahlen Java Basics - Anfänger-Themen 6
T Kombination von 3 Zahlen Java Basics - Anfänger-Themen 5
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
P Aus Text Datei nur Zahlen übernehmen Java Basics - Anfänger-Themen 13
K Warum werden immer noch doppelte Zahlen ausgegeben ? Java Basics - Anfänger-Themen 13
M negative Zahlen bei Intervallen Java Basics - Anfänger-Themen 10
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
M 3 Zahlen miteinander vergleichen Java Basics - Anfänger-Themen 18
J Taschenrechner mit mehr als 2 Zahlen. Java Basics - Anfänger-Themen 18
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
B Alle Zahlen finden, die 3 bestimmte Ziffern enthalten? Java Basics - Anfänger-Themen 9
K Java gleicher Wert von Zahlen? Java Basics - Anfänger-Themen 5
I aus 2 random zahlen soll nur die ungerade summe der beiden genommen werden. Java Basics - Anfänger-Themen 13
J Operatoren Zahlen addieren Java Basics - Anfänger-Themen 13
B Threads Counter mit ungeraden Zahlen Java Basics - Anfänger-Themen 32
JavaBeginner22 Java 2 Zufalls zahlen generieren. Java Basics - Anfänger-Themen 11
X Wie kann man ein Regex erstellen, die 8-Bit-Binär-Zahlen darstellen. Java Basics - Anfänger-Themen 1
M Stream mit den ersten n natürlichen Zahlen Java Basics - Anfänger-Themen 4
D Größtes Palindrom Produkt aus zwei dreistelligen Zahlen Java Basics - Anfänger-Themen 60
T Methode, die prüft ob in einem Int-Array maximal 2 Zahlen enthalten sind, die größer als ihr Vorgänger sind Java Basics - Anfänger-Themen 5
sserio Befreundete Zahlen Java Basics - Anfänger-Themen 7
AhmadSlack Verzweigungen zahlen multiplizieren Java Basics - Anfänger-Themen 4
padde479 Array Multiplikation der ersten n Zahlen Java Basics - Anfänger-Themen 7
U Lotto-Zahlen App Java Basics - Anfänger-Themen 34
berserkerdq2 Wie würde man einen regulären Ausdruck in Java schreiben, der prüft, dass zwei bestimtme Zahlen nicht nebeneinadner sind? Java Basics - Anfänger-Themen 3
H Arrays: Größten Zahlen Unterschied herausfinden Java Basics - Anfänger-Themen 20
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
J Zahlen bis zu einem bestimmten Grenzwert ausgeben Java Basics - Anfänger-Themen 11
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
P Zweidimensionales Array als Tabelle mit befüllten Zahlen Java Basics - Anfänger-Themen 10
W Wie ziehe ich von einer bestimmten Zahl, Zahlen ab, bis mein Ergebnis null beträgt? Java Basics - Anfänger-Themen 10
emx-zee Erste Schritte NullPointerException, Array mit zufälligen Zahlen füllen Java Basics - Anfänger-Themen 2
W Bestimmte Zahlen bei Math.random ausschließen? Java Basics - Anfänger-Themen 31
K Erste Schritte "Taschenrechner" zeigt keine Komma Zahlen an. Java Basics - Anfänger-Themen 8
P Drei Zahlen eines Würfelspiels auswerten Java Basics - Anfänger-Themen 7
H Häufigkeit von Zahlen ermitteln Java Basics - Anfänger-Themen 23
sashady Zahlen rekursiv zerlegen und Ziffern addieren Java Basics - Anfänger-Themen 38
H Zahlen kürzen Java Basics - Anfänger-Themen 2
B Häufigkeit einzelner Zahlen in einem Array Java Basics - Anfänger-Themen 6
nevel Programm für die Summer der Zahlen 1- 1ß Java Basics - Anfänger-Themen 12
jhCDtGVjcZGcfzug Fibonacci Zahlen rekursiv und iterativ Java Basics - Anfänger-Themen 21
H Eingegebene Zahlen mit Array ausgeben Java Basics - Anfänger-Themen 18
I 12 Spalten von jeweils 30 Zahlen in Konsole ausgeben Java Basics - Anfänger-Themen 6
R Array mit Unter- und Obergrenze ganze Zahlen dazwischen erscheinen nicht Java Basics - Anfänger-Themen 1
OZAN86 For Schleife von 1-50 die Zahlen werden durch ein Komma getrennt Java Basics - Anfänger-Themen 10
Bademeister007 Operatoren Alle Zahlen einer ArrayList die durch 5 teilbar ist Java Basics - Anfänger-Themen 2
mhmt_03 dafür sorgen, dass im JTextfield nur zahlen eingebbar sind Java Basics - Anfänger-Themen 9
Ianatrix Zahlen von a bis b berechnen Java Basics - Anfänger-Themen 7
P Wie kann ich die Zahlen dieses Arrays dividieren? Java Basics - Anfänger-Themen 2
P Nutzer entscheiden lassen, wie viele Zahlen dieser in ein Array eingeben möchte. Java Basics - Anfänger-Themen 6
T Bestimmte Zahlen ausgeben mit einer whilfe Schleife Java Basics - Anfänger-Themen 21
H Alle Geraden zahlen bis 10 ausgeben Java Basics - Anfänger-Themen 11
java3690 Liste mit zufälligen zahlen füllen Java Basics - Anfänger-Themen 27
macle Rekursive String Methode, Gerade Zahlen rausfiltern Java Basics - Anfänger-Themen 10
M Regex nur Zahlen und Punkt zulassen, Keine Eingabe(Leeres TextFeld) nicht zulassen Java Basics - Anfänger-Themen 6
L Mit Zahlen im String rechnen Java Basics - Anfänger-Themen 19
G Java eingelesene Zahlen Java Basics - Anfänger-Themen 2
D Zahlen werden falsch gekürzt :? Java Basics - Anfänger-Themen 27
H Ungerade Zahlen ausgeben von 1 bis 1000 Java Basics - Anfänger-Themen 8
C Positive und negative Zahlen mit Regex extrahieren Java Basics - Anfänger-Themen 8
N Wörter und Zahlen nach speziellen Wörtern ausgeben Java Basics - Anfänger-Themen 11
F Komplexe Zahlen auf verschiedene Weise addieren Java Basics - Anfänger-Themen 18
L Java Int-Array, Zahlen sortieren Java Basics - Anfänger-Themen 8
B Fibonacci Zahlen dynamische Programmierung Java Basics - Anfänger-Themen 7
V Erste Schritte Taschenrechner mit beliebig vielen Zahlen Java Basics - Anfänger-Themen 5
X Wie kann ich Zahlen in einzelne Zifferne zerlegen? Java Basics - Anfänger-Themen 3
J 10 positive Zahlen eingeben Java Basics - Anfänger-Themen 10
K Rechtsbündige Ausgabe von Zahlen Java Basics - Anfänger-Themen 6
M Zahlen erraten Java Basics - Anfänger-Themen 7
E Zahlen von einem Array mit zahlen von zweitem Array vergleichen Java Basics - Anfänger-Themen 27
S Mit nextGaussian() positive Zahlen erzeugen? Java Basics - Anfänger-Themen 39
D auch negative Zahlen sotieren Java Basics - Anfänger-Themen 18
M Warum berechnet mein Primzahlenprog zu hohe Zahlen nicht? Java Basics - Anfänger-Themen 20
W Bell Zahlen Java Basics - Anfänger-Themen 2
H Min und Max von Zahlen Java Basics - Anfänger-Themen 10
der_Schokomuffin Fehler bei Zufallsgeneration von Zahlen Java Basics - Anfänger-Themen 7
J Erste Schritte Alle möglichen ausgaben von 5 Zahlen als Vector Java Basics - Anfänger-Themen 7
F Abstand zum Durchschnitt von 5 Zahlen berechnen... Java Basics - Anfänger-Themen 16
Moji Klassen Array Zahlen zu Sternchen (U-Helmich 7.1-4) Java Basics - Anfänger-Themen 5
F Summe aller echten Teiler und Zahlen zurückgeben Java Basics - Anfänger-Themen 1
T Perfekte Zahlen ausgeben Java Basics - Anfänger-Themen 12
F Zahlen im Feld sortieren + Unterprogramm Java Basics - Anfänger-Themen 4
H Zahlen 1-100 Java Basics - Anfänger-Themen 2
H Einlesen von Zahlen Java Basics - Anfänger-Themen 20
O Problem gleiche Zahlen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen


Oben