从Java方法返回数组

时间:2011-09-22 21:55:24

标签: java arrays

我正在尝试从此方法返回两个数字。我认为这是正确的。我哪里错了?

public int[] getDimension() {
    int shapeWidth = 0;
    int shapeHeight = 0;
// .....
    int[] result = new int[] {shapeWidth, shapeHeight};
    return result;
}

然后在呼叫站点,这是正确的吗?

  public int getWidth() {
      return getDimension()[0];
  } 

我在问,因为我相信有一个错误,但我没有看到它。

3 个答案:

答案 0 :(得分:4)

没关系。简短但完整的程序,以证明它的工作:

public class Test {

    public static void main(String args[]) {
        int width = getDimension()[0];
        System.out.println(width);
    }

    public static int[] getDimension() {
        int shapeWidth = 5;
        int shapeHeight = 10;
        int[] result = new int[] {shapeWidth, shapeHeight};
        return result;
    }
}

顺便说一句,您可以使result声明行稍微简单:

int[] result = {shapeWidth, shapeHeight};

答案 1 :(得分:3)

我建议使用类

,而不是使用数组
class Dimensions {
    private int width;
    private int height;

    public Dimensions(int width, int height) {
        this.width = width;
        this.height = height;
    }

    // add either setters and getters
    // or better yet, functionality methods instead
}

这将为您提供编译时参照完整性,这比基于“我们知道索引0是宽度而索引1是高度”的推断要好得多。

如果您仍想使用数组,Jon的答案就是现场。

答案 2 :(得分:1)

您的代码看起来很好,但如果您只需要一对,请尽量不要使用数组。

由于Java没有元组/对,你必须实现它们,但它很容易。有关可能的实施,请参阅this question

public class Test {

    public static void main(String args[]) {
        int width = getDimension().getLeft();
        System.out.println(width);
    }

    public static Pair<Integer, Integer> getDimension() {
        int shapeWidth = 5;
        int shapeHeight = 10;
        return new Pair<Integer, Integer>(shapeWidth, shapeHeight);
    }
}

这比Dimension类更好,因为您可以在代码中的任何位置使用它。