2017-03-16 87 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-by-value?rq=1) –

回答

2

你沒有對返回值做任何事情。如果你想爲它分配回x,做到這一點:

x = succ(x); 

編輯:或者,也許你的意思是添加x,因爲你在一個循環做什麼呢?這完全不是清楚這個代碼的意圖是什麼,我懷疑更多適用的變量/方法名稱會有所幫助。但是,如果你想保持增加的結果,你只是這樣做:

x += succ(x); 

此外,您不需要修改xsucc功能。以這種方式這樣做可能會在其他示例中導致未來出乎意料的行爲。儘可能簡化操作。剛剛回歸的計算值:

return x + 1; 
+0

非常感謝,那就是解決方案。還要感謝關於在我的'succ'函數中修改'x'的建議! – Shinubi

0

你缺少SUCC方法的返回值,更換succ(x);x = succ(x);

int add(int x, int y) { 

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

你不斷從返回值覆蓋x值功能。您需要在每次迭代中添加它,而不是覆蓋它。

相關問題