Java中如何在类方法内访问类变量?代码报错求助
问题解决方法
你的核心问题是没有把构造函数接收的lowerbound和upperbound定义为类的成员变量,它们只是构造函数内部的局部参数,类的其他方法自然访问不到。同时你定义的frequency数组也是构造函数的局部变量,后续同样没法在add方法里操作。
修正步骤如下:
- 在
Histogram类内部声明成员变量,用来存储边界值和频率数组 - 在构造函数中给这些成员变量赋值,而不是重新定义局部变量
- 调整
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
相关产品推荐
相关产品推荐

