如何从其他方法访问java中的方法?

问题描述:

我对编程非常陌生。但是,我写了一个名为“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://*.com/questions/40480/is-java-pass-by-reference-or-pass-by-value?rq=1 –

+0

哦哇,它的工作。我不敢相信我没有想到这一点。非常感谢! – Shinubi

+1

欢迎编程!你真的很好。作为答复也张贴会推荐你参考[这个链接](http://*.com/questions/40480/is-java-pass-by-reference-or-pass-by-value?rq=1) –

你没有对返回值做任何事情。如果你想为它分配回x,做到这一点:

x = succ(x); 

编辑:或者,也许你的意思是添加x,因为你在一个循环做什么呢?这完全不是清楚这个代码的意图是什么,我怀疑更多适用的变量/方法名称会有所帮助。但是,如果你想保持增加的结果,你只是这样做:

x += succ(x); 

此外,您不需要修改xsucc功能。以这种方式这样做可能会在其他示例中导致未来出乎意料的行为。尽可能简化操作。刚刚回归的计算值:

return x + 1; 
+0

非常感谢,那就是解决方案。还要感谢关于在我的'succ'函数中修改'x'的建议! – Shinubi

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

int add(int x, int y) { 

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

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