如何从主类获取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
相关产品推荐
相关产品推荐

