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

Java中如何在类方法内访问类变量?代码报错求助

问题解决方法

你的核心问题是没有把构造函数接收的lowerbound和upperbound定义为类的成员变量,它们只是构造函数内部的局部参数,类的其他方法自然访问不到。同时你定义的frequency数组也是构造函数的局部变量,后续同样没法在add方法里操作。

修正步骤如下:

  1. 在Histogram类内部声明成员变量,用来存储边界值和频率数组
  2. 在构造函数中给这些成员变量赋值,而不是重新定义局部变量
  3. 调整add方法的判断逻辑(根据需求确认边界是否包含等于的情况)

修正后的完整代码:

public class Histogram {
    // 声明类的成员变量
    private int lowerbound;
    private int upperbound;
    private int[] frequency;

    public Histogram(int lowerbound, int upperbound) {
        // 给成员变量赋值,而非定义新的局部变量
        this.lowerbound = lowerbound;
        this.upperbound = upperbound;
        this.frequency = new int[10];
    }

    public static void main(String args[]) {
        Histogram histo = new Histogram(0, 5);
        // 恢复添加元素的代码即可正常执行
        System.out.println(histo);
    }

    public boolean add(int i) {
        // 现在可以正常访问成员变量
        // 可根据需求调整判断条件,比如是否包含边界值(i >= lowerbound && i <= upperbound)
        if (i > lowerbound && i < upperbound) {
            // 在这里编写更新frequency数组的逻辑
            return true;
        }
        return false;
    }
}

补充说明:

  • 使用this关键字是为了区分成员变量和构造函数的同名局部参数,参数名不同时可省略,但用this逻辑更清晰
  • 成员变量用private修饰是封装的最佳实践,若需外部访问这些值,可添加对应的getter方法(比如public int getLowerbound() { return lowerbound; })

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 18:55:23