Ich möchte mehrere Methoden mit der gleichen Schleife ausführen, aber ich habe ein Problem.Mehrere Methoden in einer Schleife Java
Lassen Sie uns sagen, ich habe die folgende Methode:
void xy1() {
int y1 = 0;
for (int x = 0; x < 10; x++){
y1 += x;
}
}
feine Arbeiten, alles, was ich tun müssen, ist Anruf es im Konstruktor.
Nun lassen Sie uns sagen, ich möchte auch eine andere Methode verwenden, aber mit einem anderen Anfangswert von y:
void xy2() {
int y2 = 1;
for (int x = 0; x < 10; x++){
y2 += x;
}
}
funktioniert auch gut.
Was ich will, ist jedoch, beide Methoden zur gleichen Zeit in der gleichen Schleife laufen zu lassen. Eine naheliegende Lösung wäre sie in ein Verfahren zu verschmelzen:
void xy(){
int y1 = 0;
int y2 = 1;
for (int x = 0; x < 10; x++){
y1 += x;
y2 += x;
}
}
Diese chaotisch schnell bekommt aber, wenn mehr und mehr Variablen eingeführt werden. Also, was ich versucht zu tun war die Schleife im Konstruktor setzen, und haben es auf die Methoden in jedem Zyklus nennen: Suche
Constructor(){
int y1 = 0;
int y2 = 1;
for (int x = 0; x < 10; x++){
xy1(y1, x);
xy2(y2, x);
}
}
Mit den Methoden wie folgt aus:
void xy1(int y1, int x) {
y1 += x;
}
void xy2(int y2, int x) {
y2 += x;
}
Das Problem dabei ist, von natürlich, dass jedes Mal, wenn der Konstruktor die Methoden aufruft, einfach die Anfangswerte von y1 und y2 übergeben werden, nicht die Werte, die sie aktuell haben sollten. Das Definieren der Anfangswerte in den Methoden würde dazu führen, dass sie in jedem Zyklus auf die gleiche Weise zurückgesetzt werden.
Also was ich brauche, ist für die Methoden irgendwie den letzten Wert von y für die neue Berechnung zu erinnern. Ich habe das Gefühl, dass es eine offensichtliche Lösung gibt, die ich vermisse ... Ich habe versucht, mit Google, aber ich weiß nicht wirklich, welche Suchbegriffe zu verwenden.
Und während wir dabei sind, da die von den Methoden durchgeführten Berechnungen die gleichen sind, wäre es großartig, wenn ich einfach eine einzige Methode xy definieren könnte und der Konstruktor sie mit verschiedenen Anfangswerten y (in die gleiche Schleife). Das Problem dabei wäre, dass es separate Instanzen von y geben müsste, also verhindere, dass man von zwei Instanzen der Methode manipuliert wird. (Hat das irgendeinen Sinn ergeben? Dies ist ein Problem, das ich erwarten werde.) Ich bin nicht ganz sicher, welche Form es nehmen wird.Ich kann immer eine neue Frage erstellen.)
Vielen Dank für jede Hilfe!
Was Sie vermissen, um dies zu erledigen, ist 'y1 = xy1 (y1, x); y2 = xy2 (y2, x); 'im' Konstruktor', so dass Sie die aktualisierten Werte der Variablen aufzeichnen. –
Vielleicht 'zurück y1 + x;'? Was versuchen Sie eigentlich zu lösen? Diese Methoden scheinen nichts Nützliches zu tun. Warum wollen Sie sogar, dass diese "in der gleichen Schleife" arbeiten, anstatt beide der ursprünglichen Methoden nacheinander aufzurufen? –
Ich glaube, es gibt ein Design-Problem in Ihrer Frage, zumindest Sätze wie "jedes Mal, wenn der Konstruktor die Methoden aufruft", "Die Definition der Anfangswerte in den Methoden würde dazu führen, dass sie in jedem Zyklus auf die gleiche Weise zurückgesetzt werden", " Methoden, sich irgendwie an den letzten Wert von y für die neue Berechnung zu erinnern usw., lassen meinen Spider-Sinn kribbeln. Ist dies nur für Lernzwecke gedacht oder können Sie beschreiben, was Sie eigentlich erreichen möchten (siehe auch [xy-problem] (https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem))). – Thomas