如何从 Java 方法返回 2 个值?

新手上路,请多包涵

我试图从 Java 方法返回 2 个值,但出现这些错误。这是我的代码:

 // Method code
public static int something(){
    int number1 = 1;
    int number2 = 2;

    return number1, number2;
}

// Main method code
public static void main(String[] args) {
    something();
    System.out.println(number1 + number2);
}

错误:

 Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - missing return statement
    at assignment.Main.something(Main.java:86)
    at assignment.Main.main(Main.java:53)

Java 结果:1

原文由 javaLearner.java 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 869
2 个回答

不要返回包含这两个值的数组或使用泛型 Pair 类,而是考虑创建一个表示要返回的结果的类,并返回该类的实例。给班级一个有意义的名字。与使用数组相比,这种方法的好处是类型安全,它会使您的程序更容易理解。

注意:通用 Pair 类,如此处其他一些答案中所建议的,也为您提供类型安全,但不传达结果代表什么。

示例(不使用真正有意义的名称):

 final class MyResult {
    private final int first;
    private final int second;

    public MyResult(int first, int second) {
        this.first = first;
        this.second = second;
    }

    public int getFirst() {
        return first;
    }

    public int getSecond() {
        return second;
    }
}

// ...

public static MyResult something() {
    int number1 = 1;
    int number2 = 2;

    return new MyResult(number1, number2);
}

public static void main(String[] args) {
    MyResult result = something();
    System.out.println(result.getFirst() + result.getSecond());
}

原文由 Jesper 发布,翻译遵循 CC BY-SA 2.5 许可协议

Java 不支持多值返回。返回值数组。

 // Function code
public static int[] something(){
    int number1 = 1;
    int number2 = 2;
    return new int[] {number1, number2};
}

// Main class code
public static void main(String[] args) {
  int result[] = something();
  System.out.println(result[0] + result[1]);
}

原文由 Matt 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏