Array-Problem


#1
Hallo,

gleich zum Problem. Ich möchte einen Winkel speichern und zwar immer den letzten vor dem aktuellen Klick.
Dazu nehme ich ein Double-Array. In einer Methode versuche ich nun, das mir dieser letzte Winkel als Double zurückgegeben wird.

Also:

public double lastangle(double aktuell){

array[0] = aktuell;
array[1] = alt;

if(clicked){

alt = aktuell;

}

Nur irgendwie klappt das nicht ganz.

Wäre schön, wenn mir jemand helfen könnte.:)

Gruß Federhalter
 

vfl_freak

Premium-User
#3
Moin,

zuerst einmal: nutze bitte die Code-Tags zu posten von Code !!

Nur irgendwie klappt das nicht ganz.
sodann ist das KEINE Fehlerbeschreibung !!
Was bedeutet das denn?
Kommen Fehler ??
Wenn ja, welche ??

Java:
public double lastangle( double aktuell )
{
    array[0] = aktuell;
    array[1] = alt;
    if( clicked ) 
    {
        alt = aktuell;
    }
    return alt; // hier ??
oh oh ...
Was genau ist "array" und ist es innerhalb der Methode bekannt (sprich: wo und wie deklariert) ?
Was genau ist "alt" und ist es innerhalb der Methode bekannt (sprich: wo und wie deklariert) ?
Was genau ist "clicked" und ist es innerhalb der Methode bekannt (sprich: wo und wie deklariert) ?

Fragen über Fragen ....
Poste am besten den gesamten (relevanten) Code !!

Gruß Klaus
 
#4
Hallo,

naja da gibt's nicht viel zu posten. Ich hab einen Winkel, der sich zur Laufzeit verändert. So. Jetzt hab ich mir gedacht ich nehme ein einfaches Double-Array her, das Double-Werte speichert. Das Array, das im Konstruktor richtig deklarierte wurde( also:
double Array = new double[2];) soll den aktuellen Winkel also, wenn ich irgendwohin klicke und den anfangswinkel, also alt = 0 aufnehmen.
Geh davon aus das der Methode alles bekannt ist sowohl in der Klasse, als auch zur Laufzeit.
Der Rest vom Code ist absolut WURSCHT. Ich möchte nur eine Methode schreiben, die mir den alten Winkel zurückgibt.
Es geht mir um den Algorithmus der Methode.

Mfg Federhalter
 

vfl_freak

Premium-User
#5
Moin,

naja da gibt's nicht viel zu posten. Ich hab einen Winkel, der sich zur Laufzeit verändert. So. Jetzt hab ich mir gedacht ich nehme ein einfaches Double-Array her, das Double-Werte speichert. Das Array, das im Konstruktor richtig deklarierte wurde( also:
double Array = new double[2];) soll den aktuellen Winkel also, wenn ich irgendwohin klicke und den anfangswinkel, also alt = 0 aufnehmen.
Geh davon aus das der Methode alles bekannt ist sowohl in der Klasse, als auch zur Laufzeit.
Der Rest vom Code ist absolut WURSCHT. Ich möchte nur eine Methode schreiben, die mir den alten Winkel zurückgibt.
Es geht mir um den Algorithmus der Methode.
Toll :eek::confused:

Wenn das alles WURSCHT ist und Du sicher bist, dass alles richtig deklariert und innerhalb der Methode bekannt ist und zudem nicht sagen willst, was nicht funktioniert rsp. welches Fehlverhalten Du hast, kann man nur sagen, dass
wenn "clicked" true ist, dem Wert "alt" der Wert "aktuell" zugewiesen wird und jeweils stets "alt" zurückgebenen wird
Wo ist jetzt genau die Frage ????

Gruß Klaus
 
#6
Ok,
die Fragen sind: Wo speichere ich alt und wo speichere ich aktuell? Wie erreiche ich, dass der alte Wert sobald geklickt wurde den zuletzt aktuellen Wert annimmt und der aktuelle Wert wieder neu gespeichert wird im Array, sodass ich mir den alten Wert auslesen kann? Eigentlich ein Konsolenproblem aber ich komm nicht drauf wie man das realisiert!
 

vfl_freak

Premium-User
#7
Moin,
die Fragen sind: Wo speichere ich alt und wo speichere ich aktuell?
was meinst Du mit Speichern??
DB, Variable, ... ??

Wie erreiche ich, dass der alte Wert sobald geklickt wurde den zuletzt aktuellen Wert annimmt und der aktuelle Wert wieder neu gespeichert wird im Array, sodass ich mir den alten Wert auslesen kann?
indem du dann Deine Methode aufrufst ??

Wie gesagt, ohne den weiteren Code zu kennen, ist das alles nur Rätselraterei.
Vermutlich läßt sich das Ganz ohnehin einfacher lösen - sprich: ohne die Methode !

Gruß Klaus
 
#8
Nachtrag!

Ich glaube Du verstehst mein Problem nicht.
Vergiss mal Java kurz.
Also: Ich will zwei Schritte nach vorne gehen. Nachdem ja jeder unterschiedlich groß ist, gleicht der erste Schritt nicht dem zweiten in der Länge. Ich will nun wissen wie groß der erste Schritt war nachdem ich die zwei Schritte gegangen bin.
 
#9
Ok,
wie Du willst.
Hinter dieser Methode steckt ein ganz anderes Problem:

Ich habe ein Panzer-Sprite. Wenn ich irgendwo auf das Label klicke dreht sich das Sprite solange um die eigene Achse, bis es in Klickrichtung ausgerichtet ist. Hoffe soweit klar. Das Problem ist nun, dass ich mich zwar vom Anfangswinkel 0 Grad bis 360 Grad drehen kann, aber nicht zurück per Klick in einen größeren Quadranten. Also ich kann mich nur in EINE Richtung drehen aber nicht in zwei.

Ich dachte mir jetzt, wenn ich den letzten Winkel vor dem aktuellen weiß, dass ich das Panzersprite mittels if-Bedingung wieder retour fahren lassen kann.

Dafür bräuchte ich allerdings den letzten Winkel und daher wollte ich so eine Methode schreiben.

Wenn Du eine andere Möglichkeit weißt, sag mir bitte Deinen Ansatz.

Gruß Federhalter
 

ComFreek

Mod | @comfreek
Moderator
#11
Ich verstehe auch nicht ganz, auf was du hinaus möchtest.

Aber wenn du immer nur den alten Wert benötigst, reichen im Prinzip zwei Variablen:
Java:
private double oldAngle;
private double latestAngle;
Setzen eines neuen Wertes:
Java:
oldAngle = latestAngle;
latestAngle = computeLatestAngle();