从Java方法返回数组

问题描述 投票:0回答:3

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

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

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

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

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

java arrays
3个回答
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类更好,因为您可以在代码中的任何位置使用它。


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};

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的回答就是现实。

© www.soinside.com 2019 - 2024. All rights reserved.