Position auslesen mit einer Funktion

Hallo,
ich würde gerne die Position von einem Spieler auslesen.
Ich möchte das die Parameter in der Funktion angegeben werden und dann eben diese Position in den Double gespeichert wird.

Nur habe ich das Problem, dass die Parameter beim verwenden der Funktion, bzw. beim compilen einen Fehlercode ausgeben. (“Variable “x” might not have been initialized” und “Variable “y” might not have been initialized”

Code:

        test = (TextView) findViewById(R.id.test);

        double x;
        double y;

        test2.GetPlayerPos(x,y); // Fehlercode

        test.setText("x: " + x + " y: " + y);

        test2.SetPlayerPos(10.0,5.0);

        test2.GetPlayerPos(x,y);

        test.setText("x: " + x + " y: " + y);

Funktion zum Auslesen (GetPlayerPos):

    {
        X = this.Position[0];
        Y = this.Position[1];
    }

du musst double x=0; und double y=0; schreiben

[quote=Unregistriert1]Ich möchte das die Parameter in der Funktion angegeben werden und dann eben diese Position in den Double gespeichert wird.[/quote]Das wird so nicht funktionieren. In Java werden Paramter “by Value” übergeben. Selbst wenn die Parameter in der Methode
GetPlayerPos()
[spoiler]Methodennamen fangen in Java immer mit einem Kleinuchstaben an![/spoiler]
auch y und x heißen haben Änderungen an den Parametern dort keine Auswirkungen auf die aufrufende Code-Stelle.

Was anderes wäre es, wenn Du eine Klasse hättest:cass Position { public double x; public double y; }
Dann könntest Du ein Objekt dieser Klasse an die Methode übergeben. In dem Fall würde die Referenz auf das Objekt der Value sein, der übergeben wird so dass aufrufende und aufgerufenen Methode auf das selbe Objekt zeigen und daher die Änderungen, die in der aufgerufenen Methode gemacht, werden auch in der aufrufenden sichtbar sind.

Bye
TT

Ich hätte noch eine Frage.
Ich möchte in diesem Fall eine Variable des Typs Short einen Wert über einen Setter zuteilen.
Muss ich nun bei dem zuteilen den Parameter immer auf den Typ Short casten?
Ansonsten bekomme ich immer einen Error Code.

Warum willst du denn den Wert in einem short Speichern und nicht in einem int (klar braucht der mehr Speicher (4 anstelle 2 Byte) aber kommt es auf den Speicher an und wird überhaupt der restliche Freie Speicher verwendet oder bleibt der einfach leer?? Bei einem int hast du bei Zahlen keine Probleme, da die klassische Zuweisung von Zahlen ein int ist, also wenn du in deinem sourccode 1 schreibst ist das immer erstmal ein int. willst du diesen int in einem short speichern, muss dieser Umgewandelt werden. Ein ähnliches Problem hättest du würdest du anstelle von 1 “1” schreiben, da dass dann ein String wäre und erst in einen numerischen Wert umgewandelt werden muss

Warum soll ich den primitive Datentypen nutzen? Und benutzt der ein Int nicht doppelt so viel Bits wie ein Short?

[quote=Unregistriert1]Warum soll ich den primitive Datentypen nutzen?[/quote]Der Hardcore OO-Programmiere würde jetzt sagen: es gibt keinen Grund. primitive Datentypen sind ein Zugeständnis an C-Programmierer und haben in einer OO-Sprache eigentlich nichts zu suchen.

Auf der anderen Seite liest sich 1+1 einfach schöner als 1.add(1).

[quote=Unregistriert1;115782]Und benutzt der ein Int nicht doppelt so viel Bits wie ein Short?[/quote]Jein.
Wie @CyborgGamma schon schrieb: ja, ein primitiver Short-Value benötigt nur die Hälfte Speicher, aber dass wirkt sich in dem Programm nur aus, wenn die gesparten 2 Byte (16Bit) auch tatsächlich anderweiten benötigt werden. Das hängt nun wieder vom Scope der betreffenden Variable ab. Für Parameter und lokale Variablen in einer Methode lohnt sich die Betrachtung nicht, die sind nach Ende der Methode nicht mehr vorhanden. In immutable Objekten buss man sich da auch keinen großen Kopf machen, die leben idR ja auch nicht lange. Und darüber hinaus sind einfache Variablen meist auch unkrittisch. Eigentlich muss man sich nur bei Arrays primitiver Typen über Speicheplatz gedanken machen, aber in einer OO-Sprache sind Arrays allgemein ehr selten eine geeignete Datenstruktur…

bye
TT