2016-09-20 12 views
-1

出力として最大入力を得るための関数を持つクラスを作成しましたが、結果は間違っています。私はなぜ、次は私のコードではよく分からない:最大値を計算すると間違った結果が返される

public class Test { 
    public int max(int a, int b) { 
     if(a > b) 
      return a; 
     else { 
      swap(a, b); 
      return a; 
     } 
    } 

    private void swap(int a, int b) { 
     // TODO Auto-generated method stub 
     int tmp = a; 
     a = b; 
     b = tmp; 
    } 

    public static void main(String[] args) { 
     Test t = new Test(); 
     int max = t.max(3, 6); 
     System.out.println(max); 
    } 
} 

この場合、私の結果は、ヨーヨーは、スワップ機能を持っていないのはなぜ3ではなく6

+0

JavaScriptはJavaのではありません。 – Li357

+3

参照:http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-byvalue?rq=1なぜスワップメソッドが必要ですか? – Li357

+0

私は最大値を保持したい – Jingwei

答えて

0

@Jingweiのですか?

次2つの整数の最大値を取得するにはプログラム

public class Test { 
    public int max(int a,int b) 
    { 
     if(a > b) 
      return a; 
     else 
      return b; 
    } 

    public static void main(String [] args) 
    { 
     Test t = new Test(); 
     int max = t.max(3, 6); 
     System.out.println(max); 
    } 
} 
+0

私は最大値を保持したい。実際には、私の質問はなぜswap()が機能しないのですか? – Jingwei

+0

Swap()は変数をスワップしませんが、変数のコピーは渡されますが、ポインタは渡していません。これは、クラス全体で静的変数を使用していないためです。クラスの変数として 'a'を宣言すると、スワップが機能するはずです。私はサンプルを書くことができます。 – talisman027

+0

あなたはどういう意味ですか?スワップ()は変数をスワップしませんが、変数のコピーが渡され、ポインタを渡していません。 – Jingwei

関連する問題