1. ホーム

[解決済み】Javaメソッドから2つの値を返すには?

2022-04-11 16:52:59

質問

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

解決方法は?

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