2016-03-22 10 views
0

Javaメソッドでは、パラメータを一致させるためにreturnステートメントは必要ありません。どうして?値を返すメソッドとそのパラメータに関するJavaのロジック

3つのパラメータx、y、zを取るこの簡単な方法を考えてみましょう。この方法は、1つのリターンパラメータ(すなわち、x、yまたはzを返す)のみが使用されているときに機能します。なぜJavaにはreturn x, y, z;などが必要なのでしょうか?私はJavaの初心者ですから、なぜOOPの原則に到達するのかを知ることができます。とにかく、それの背後に論理があるのか​​、それとも単なるJavaなのか不思議です。ありがとう。

public static int someNumbers(int x, int y, int z) { 

    if (y > z) { 
     System.out.printf("%d is greater than %d", y, z); 
    } else { 
     System.out.printf("Number three is %d", z); 
    } 
    return x; 
} 
+4

パラメータを使用すると、メソッドに入れたものです、戻り値はあなたが出るものです。なぜ彼らは一致する必要がありますか? –

+0

私は伝統的に、ほとんどのプログラミング言語は単一の結果しか返していないと言いたいのですが、Javaは設計時に伝統的な言語の形になっていました。 – markspace

+0

そのロジックによって、パラメータを必要としないメソッドはvoidを返すように強制されますか?それはおっしゃるでしょう。 – ChiefTwoPencils

答えて

1

ParametersReturn typesは本当にお互いに何らかの関係を持っていません。メソッドは任意の型の0以上のパラメータを持つことができます。

public int someMethod(int x, String y, Object z) { 
    //Does something 
    return x * 5 - 10; 
} 

ただし、0または1の戻り値しか持たない場合があります。どこに0の戻り値は、ボイドのように定義する必要があります。

public void someMethod(int x, String y, Object z) { 
    //Does something but returns nothing 
} 

など2 Integersとして、1つの以上の値を返すために必要とするとき、あなたはこれらの値を保持するObjectを作成することができます。これはちょっとJavaObject Oriented Languageと定義しています。

class IntegerHolder{ 
    int firstValue; 
    int secondValue; 

    //This is a constructor, it creates the object. 
    public IntegerHolder(int first, int second){ 
     firstValue = first; 
     secondValue = second; 
    } 
} 

public IntegerHolder someMethod(int x, String y, Object z) { 
    return new IntegerHolder(x, x * 2); 
} 

ただし、基本的にはJavaをお読みになることをおすすめします。ウェブの周りには何百ものリソースがあります。

1

明確に定義された関数は、1つの出力のみを持つことができます。入力と出力の関係は、複数の入力を与えることができますが、出力は1つだけです。

Java関数の定義はちょうどこの規則に従います。一度に複数の結果を得るために、javaの他の機能を使用することができます。しかし、また、これを読むことができますfunction.Youの定義に従って出力に返す必要があります:

https://math.stackexchange.com/questions/271613/why-is-a-function-defined-as-having-only-one-y-value-output

関連する問題