2017-03-16 13 views
1

私はプログラミングがとても新しいです。しかし、私は "succ"というメソッドを書いています。これは、与えられたパラメータに1を加えます。他のメソッドからjavaのメソッドにアクセスするには?

int succ(int x) { 
    return x += 1; 
} 

私は最初の方法で2つの数字を追加する別の方法を書いています。これは私の試みが次のようになります:

int add(int x, int y) { 
    for(int i = 0; i < y; i++) { 
    succ(x); 
    } 
    return x; 
} 

残念ながら、それは動作していないようです。常に最初のxを返します。例:私がadd(8,5)を入力すると、それは8を返します。誰かが私を助けることができますか?私は間違って何をしていますか?

ありがとうございます。

+0

'x = succ(x)'を実行してみてください。また、このhttps://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value?rq=1を参照してください –

+0

ああうわー、それは働いた。私はそれを考えなかったとは信じられません。どうもありがとう! – Shinubi

+1

プログラミングへようこそ!あなたは本当にうまくいっています。答えが投稿されると、[このリンク](http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-byvalue?rq=1) –

答えて

2

返された値で何もしていません。あなたが戻っxにそれを割り当てたい場合は、その操作を行います。

x = succ(x); 

編集:あなたはループの中でそれをやっているので、または、おそらくあなたはに意味は、xを追加しますか? は完全にではありません。このコードが意味することを明確にしています。より適切な変数/メソッド名が役立つと思われます。あなたが結果を追加しておきたい場合しかし、あなたはこれを行うだろう:

x += succ(x); 

また、あなたはsucc機能でxを変更する必要はありません。このようにすると、将来他の例で予期しない動作が発生する可能性があります。できるだけシンプルに操作してください。あなたはSUCCメソッドの戻り値が欠落している

return x + 1; 
+0

ありがとう、それは解決策でした。私の 'succ'関数で' x'を修正する助言をくれてありがとう! – Shinubi

0

、あなたがからの戻り値をxの値を上書きしておくx = succ(x);

int add(int x, int y) { 

    for(int i = 0; i < y; i++) { 
    x = succ(x); 
    } 
    return x; 
} 
0

succ(x);を置き換える:ちょうど計算された値を返します関数。上書きするのではなく、反復ごとに追加する必要があります。

関連する問題