You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:52:03