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

如何将Java类中不同方法的变量传入同一个目标方法?

解决方法:将A、B、C方法中的变量传入D方法

嘿,我来帮你搞定这个把A、B、C方法里的变量传给D的问题~首先得先指出你当前代码里的几个小问题,再给你几种实用的解决方案:

先说说原始代码的问题

  1. 变量作用域问题:a、b、c都是各自方法里的局部变量,只能在定义它们的方法内部使用,D方法根本访问不到这些变量。
  2. 语法错误:D方法的参数没有声明类型,Java里必须明确参数类型,比如int a而不是a。
  3. 局部变量未初始化:你只声明了int a;但没赋值,直接用的话会编译报错。

方案1:把变量改成类的成员变量(适合共享实例状态)

如果这些变量是属于整个Test类实例的状态(比如需要在多个方法中持续保存),可以把它们提升为类的成员变量,这样所有方法都能访问:

public class Test { // 类名首字母大写是Java规范哦
    // 成员变量,属于整个实例,所有方法都能访问
    private int a;
    private int b;
    private int c;

    public void A() {
        a = 15; // 给成员变量赋值
    }

    public void B() {
        b = 25;
    }

    public void C() {
        c = 35;
    }

    public void D() {
        int d = a + b + c;
        System.out.println("总和是:" + d); // 输出75
    }

    // 测试调用
    public static void main(String[] args) {
        Test testObj = new Test();
        testObj.A();
        testObj.B();
        testObj.C();
        testObj.D();
    }
}

方案2:让A、B、C返回变量值,调用D时直接传递(适合临时值场景)

如果a、b、c只是方法计算出来的临时值,不需要长期保存,更推荐让A、B、C返回对应的值,然后在调用D的时候把这些值传进去,这样更符合单一职责原则:

public class Test {
    public int A() {
        int a = 10;
        return a; // 返回计算好的a值
    }

    public int B() {
        int b = 20;
        return b;
    }

    public int C() {
        int c = 30;
        return c;
    }

    // D方法明确声明参数类型
    public void D(int a, int b, int c) {
        int d = a + b + c;
        System.out.println("总和是:" + d); // 输出60
    }

    public static void main(String[] args) {
        Test testObj = new Test();
        // 先获取A、B、C的返回值,再传给D
        int aVal = testObj.A();
        int bVal = testObj.B();
        int cVal = testObj.C();
        testObj.D(aVal, bVal, cVal);
    }
}

方案3:链式调用(适合设置类状态的场景)

如果A、B、C是用来一步步设置实例状态的,可以让每个方法返回当前实例,实现链式调用,代码会更简洁:

public class Test {
    private int a;
    private int b;
    private int c;

    public Test setA() {
        a = 5;
        return this; // 返回当前实例,支持链式调用
    }

    public Test setB() {
        b = 10;
        return this;
    }

    public Test setC() {
        c = 15;
        return this;
    }

    public void calculateSum() { // 可以给D起个更有意义的名字
        int d = a + b + c;
        System.out.println("总和是:" + d); // 输出30
    }

    public static void main(String[] args) {
        // 链式调用一步完成设置和计算
        new Test().setA().setB().setC().calculateSum();
    }
}

额外注意事项

  • Java类名规范是首字母大写,所以建议把test改成Test
  • 局部变量必须初始化后才能使用,否则会编译错误
  • 方法命名尽量见名知意,比如把A、B改成setA、calculateBValue之类的,可读性会更好

内容的提问来源于stack exchange,提问作者user529295

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:56:28