Rückgabe eines Arrays durch Funktion

Roovy

Aktives Mitglied
Ich habe eine Funktion geschrieben die ein Array zurück gibt. posCor[0] und posCor[1] sind dabei immer 0, obwohl das nicht sein kann, da position wie folgt errechnet wird:
Code:
if (pos == LEFT) {
   posCor[0] = 0;
   posCor[1] = (int) ((screenSize.getHeight() - Window.getHeight()) / 2);
} //...
Es geht noch weiter mit LEFT_TOP, LEFT_BOTTOM, etc. Die habe ich als Konstanten in dieser Klasse erstellt.
So greife ich auf die Funktion zu:
Code:
myJFrame.setPosition(Position.getPosition(position)[0], Position.getPosition(position)[1])
Wo liegt der Fehler?
 
Code:
public class Position {

    private static int[] posCor = new int[2];
    private static Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    public static Position LEFT_TOP, LEFT, LEFT_BOTTOM;
    public static Position BOTTOM, TOP;
    public static Position RIGHT_TOP, RIGHT, RIGHT_BOTTOM;

    public Position()
    { }
    public static int[] getPosition(Position pos)
    {
        if (pos == LEFT_TOP) {
            posCor[0] = 0;
            posCor[1] = 0;
        } else if (pos == LEFT) {
            posCor[0] = 0;
            posCor[1] = (int) ((screenSize.getHeight() - Window.getHeight()) / 2);
        } else if (pos == LEFT_BOTTOM) {
            posCor[0] = 0;
            posCor[1] = (int) (screenSize.getHeight() - Window.getHeight());
        } else if (pos == BOTTOM) {
            posCor[0] = (int) (screenSize.getWidth() - Window.getWidht()) / 2;
            posCor[1] = (int) screenSize.getHeight() - Window.getHeight();
        } else if (pos == TOP) {
            posCor[0] = (int) (screenSize.getWidth() - Window.getWidht()) / 2;
            posCor[1] = 0;
        } else if (pos == RIGHT_TOP) {
            posCor[0] = (int) screenSize.getWidth() - Window.getWidht();
            posCor[1] = 0;
        } else if (pos == RIGHT) {
            posCor[0] = (int) screenSize.getWidth() - Window.getWidht();
            posCor[1] = (int) (screenSize.getHeight() - Window.getHeight()) / 2;
        } else if (pos == RIGHT_BOTTOM) {
            posCor[0] = (int) screenSize.getWidth() - Window.getWidht();
            posCor[1] = (int) screenSize.getHeight() - Window.getHeight();
        }
        return posCor;
    }
}
Ich habe es ein wenig geschrumpft und Leerzeilen entfern. Ich hoffe es ist nicht allzu schwer lesbar. Ich habe auch die Imports entfernt.
 
Ohje, was ein grausiger Code...
Du hast weder LEFT_TOP, noch LEFT noch irgendeine andere deiner statischen Variablen initialisiert, daher sind sie allesamt null.
Außerdem wird bei == die Referenz der Objekte verglichen, aber ich vermute mal du willst eher einen inhaltlichen Vergleich machen.

Ich würde dir dringend empfehlen dich nochmal mit den Grundlagen zu befassen.
 
Ja, in jedem der if's findet also genau der gleiche Vergleich statt.
Ist die übergebene Position null, trifft das erste if zu, und die Werte des Arrays werden auf 0 gesetzt. ist die übergebene Position != null, trifft kein if zu, die Werte werden nicht verändert (es steht also noch der defaut-Wert 0 drin). In beiden Fällen wird {0,0} zurückgegeben

Vllt etwas hilfreich: guck dir mal enums an.
 

Neue Themen


Zurück
Oben