为何Result类的result()方法获取Calc类calcSum()返回值为0?
问题分析与解决办法
嘿,我一眼就看到问题出在哪了——你的Result类根本没用到你在Main里传入的10和10这两个数值,它自己在result()方法里用了0和0来计算,所以输出0完全是意料之中的事。
咱们拆解下代码逻辑:
- 在
Main类里,你确实调用了n.calcSum(10,10),这个操作会算出10+10并打印,但这个结果只是在控制台输出了,并没有传递给Result类。 - 而
Result类的result()方法内部,重新new了一个Calc对象,还自己定义了x=0、y=0,然后调用这个新Calc的calcSum方法,那可不就是0+0=0嘛!
下面给你两种简单的修正方案,选哪种看你的需求:
方案一:让Result接收要计算的数值
修改Result类,给result()方法添加参数,直接接收x和y:
public class Result { public void result(int x, int y){ Calc res = new Calc(); int r = res.calcSum(x,y); System.out.println("Result class: "+r); } }
然后修改Main类,把要计算的数值传给result()方法:
public class Main { public static void main(String[] args) { Result s = new Result(); int num1 = 10; int num2 = 10; // 直接把数值传给Result的方法 s.result(num1, num2); } }
方案二:传递已经计算好的结果
如果已经在Main里完成了计算,直接把结果传给Result就行:
修改Result类:
public class Result { public void result(int sum){ System.out.println("Result class: "+sum); } }
修改Main类:
public class Main { public static void main(String[] args) { Result s = new Result(); Calc n = new Calc(); // 先计算出结果,再传给Result int total = n.calcSum(10,10); s.result(total); } }
这样修改后,运行就能得到你想要的Result class: 20啦~
内容的提问来源于stack exchange,提问作者Manoj Piyumal
相关产品推荐
相关产品推荐

