ubuntuusers.de

Problem: Java: Array als Rückgabewert

Status: Ungelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

bt-fan01

Anmeldungsdatum:
7. April 2012

Beiträge: 54

Servus,

Habe ein kleines Problem: Wie kann man mit Java ein Array aus einer Methode zurückgeben? Folgendes haben wir bereits probiert:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
public xPos, yPos;
public int xypos[];

(in der Methode:)

...()
{
xypos[0]=xPos;
xypos[1]=yPos;
return xypos;
}

(Sorry, konnte das Ganze leider nicht in einen Codeblock packen, der Rechner zeigt die Website nicht korrekt an...)

Fehlermeldung in BlueJ lautet: "incompatible types" bei "return xypos"

Was tun?

Danke

Bearbeitet von rklm:

Codeblock eingefügt. Du musst doch die Webseite dafür nicht sehen.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13202

Ich verstehe nicht so recht, wo das Problem sein soll. Das machst Du einfach, wie mit anderen Rückgabewerten:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
public int[] foo() {
  final int[] result = new int[22];
  // ...
  return result;
}

public int[] bar() {
  final int[] result = {1, 2, -4, -5};
  // ...
  return result;
}

public int[] baz() {
  final int[] result = new int[]{1, 2, -4, -5};
  // ...
  return result;
}

Du müsstest wenigstens mal die Signatur der Methode angeben, sonst können wir mit der Fehlermeldung nix anfangen.

Ciao

robert

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17618

Wohnort: Berlin

Wenn Du xypos nicht in der Methode deklarierst, dann brauchst Du auch nichts zurückzugeben und solltest auch nicht.

Meist ist es aber besser umgekehrt vorzugehen: In der Methode deklarieren und zurückgeben. Oft kann man dann die Methode static machen, d.h. sie wird robust gegen Seiteneffekte.

snafu1

Avatar von snafu1

Anmeldungsdatum:
5. September 2007

Beiträge: 2133

Wohnort: Gelsenkirchen

Die Deklaration int xypos[] finde ich eh komisch. Besser wäre doch die Erstellung einer passenden Struktur als eigenen Typen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
public class Position {
    private int x;
    private int y;

    public Position(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }
}

Diesen könnte man dann für die Rückgabe verwenden.

Mechatroniker1990

Anmeldungsdatum:
20. November 2009

Beiträge: 40

Wohnort: Wittelshofen

hallo

Poste bitte den Prototypen der Funktion.

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Ich würde generell auch darüber nachdenken, wieso es unbedingt ein Array sein muss... Java hat doch so schöne Sachen wie die ArrayList 😉

Antworten |