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

如何从主类获取Bus类方法中ArrayList的size值?

问题解决思路

核心问题分析

返回值始终为0的情况,大概率是以下两个原因之一:

  • 在AddBusses方法内重新声明了同名局部变量b1、b2、b3,局部变量覆盖了成员变量的作用域,导致成员变量根本没被赋值
  • 调用get方法获取值之前,没有先执行AddBusses方法完成赋值逻辑

修正后的代码示例

Bus类代码

import java.util.ArrayList;

public class Bus {
    // 声明成员变量,默认初始值为0
    private int b1;
    private int b2;
    private int b3;

    public void AddBusses() {
        ArrayList<String> busList1 = new ArrayList<>();
        ArrayList<String> busList2 = new ArrayList<>();
        ArrayList<String> busList3 = new ArrayList<>();
        
        // 直接给成员变量赋值,避免声明同名局部变量
        busList1.add("Bus1");
        busList1.add("Bus2");
        b1 = busList1.size();

        busList2.add("Bus3");
        b2 = busList2.size();

        busList3.add("Bus4");
        busList3.add("Bus5");
        busList3.add("Bus6");
        b3 = busList3.size();
    }

    // Get方法
    public int getB1() {
        return b1;
    }

    public int getB2() {
        return b2;
    }

    public int getB3() {
        return b3;
    }
}

主类代码

public class Main {
    public static void main(String[] args) {
        Bus bus = new Bus();
        // 必须先调用AddBusses完成赋值
        bus.AddBusses();
        
        // 再调用get方法获取有效值
        System.out.println("b1的值:" + bus.getB1());
        System.out.println("b2的值:" + bus.getB2());
        System.out.println("b3的值:" + bus.getB3());
    }
}

关键注意点

  • 禁止在方法内重复声明与成员变量同名的局部变量,否则成员变量不会被修改
  • 成员变量的赋值逻辑依赖AddBusses方法的执行,必须先调用该方法再获取值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:35:00