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

如何在Depot类中调用BusGenerator类的input静态变量?

在Depot类中访问BusGenerator的input变量的可行方法

嘿,针对你的需求,我整理了几种实用的实现方式,你可以根据自己的代码场景来选择:

方法一:直接访问静态变量(最简单的方式)

你的input变量被定义成了static,这意味着它属于BusGenerator类本身,而不是某个实例。所以你可以直接在Depot类里通过BusGenerator.input来访问它。不过要记得先调用BusGenerator的run()方法获取用户输入,否则input会是默认的0值。

示例代码:

public class Depot {
    public void handleBusCount() {
        // 先初始化BusGenerator并获取用户输入
        BusGenerator busGenerator = new BusGenerator(this);
        busGenerator.run();
        
        // 直接访问静态变量
        int busNumber = BusGenerator.input;
        System.out.println("Depot收到的巴士数量:" + busNumber);
    }
}

⚠️ 注意:静态变量是全局共享的,如果后续创建多个BusGenerator实例,新的输入会覆盖之前的input值,这点要留意。

方法二:通过BusGenerator实例的getinput()方法获取

你已经写了getinput()方法,虽然它返回的是静态变量,但也可以通过BusGenerator的实例来调用这个方法。不过更规范的写法是直接用类名调用静态方法(比如BusGenerator.getinput()),因为静态方法属于类而不是实例。

示例代码:

public class Depot {
    private BusGenerator busGen;

    public Depot() {
        // 初始化并获取输入
        busGen = new BusGenerator(this);
        busGen.run();
    }

    public void checkBusNumber() {
        // 通过实例调用getinput()
        int count = busGen.getinput();
        // 或者更规范的类名调用:int count = BusGenerator.getinput();
        System.out.println("当前需要调度的巴士数量:" + count);
    }
}

方法三:重构为实例变量(更推荐的面向对象方式)

如果你的业务场景不需要全局共享巴士数量,建议把input从静态变量改成实例变量,这样每个BusGenerator实例都有自己独立的输入值,避免多个实例互相干扰,也更符合面向对象的封装原则。

首先修改BusGenerator类:

import java.util.Scanner;

public class BusGenerator {
    // 去掉static,改为实例变量
    private int input;
    private Scanner scn = new Scanner(System.in);
    private Depot depot;

    public BusGenerator(Depot depot) {
        this.depot = depot;
    }

    public int getinput() {
        return input;
    }

    public void run() {
        System.out.println("Enter Number of Buses:" );
        input = scn.nextInt();
        // 可以在这里关闭Scanner,避免资源泄漏
        // scn.close();
    }
}

然后在Depot类中通过实例获取:

public class Depot {
    public void processBusTasks() {
        BusGenerator busGenerator = new BusGenerator(this);
        busGenerator.run();
        int busCount = busGenerator.getinput();
        // 这里可以添加巴士调度的业务逻辑
        System.out.println("Depot将安排" + busCount + "辆巴士执行任务");
    }
}

最后再提个小建议:记得在合适的时机关闭Scanner对象,避免资源泄漏哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:41:35