java - 在 Java 中访问对象成员

标签 java object global

我对如何创建我正在定义的对象的实例以及如何访问它们的字段感到困惑。完整代码如下。我的类称为 compressedString,我创建了一个构造函数:

public CompressString(char let, int appears){
    char letter = let;
    int  freq = appears;
}

稍后在我的代码中,我尝试在从链表中删除 CompressString 对象后访问字段 letter 和 freq,但这正是我遇到麻烦的地方。

    CompressString tempNode;

    for(int j = 0; j<compressedString.length; j+=2){
        tempNode = list.pop();
        array[j] = tempNode.letter;
        array[j+1] = tempNode.freq;
    }

在我为字母和频率创建类级变量之前,Eclipse 给了我一个错误。为什么我需要类级变量来访问这些字段,每次我从这些对象的链表中弹出一个节点时,我是否会覆盖它们?

完整代码如下:

public class CompressString{

private char freq = 0;
private char letter;


public CompressString(char let, int appears){
    char letter = let;
    int  freq = appears;
}

public static void main(String[] argv){
    String str = "aaabbbccc";
    String str1 = "abc";
    String str2 = "abbbcccaaacccbbbccccc";

    System.out.println(compress(str));
    System.out.println(compress(str1));
    System.out.println(compress(str2));
}


private static String compress(String str){
    LinkedList<CompressString> list = new LinkedList();
    char[] array = str.toCharArray();
    char temp = array[0];
    int i = 1;
    int counter = 1;
    while(i<array.length){
        if(temp != array[i]){
            CompressString node = new CompressString(temp, counter);
            list.add(node);
        }
        temp = array[i];
        counter = 1;
        i++;
    }

    char[] compressedString = new char[list.size()*2];
    CompressString tempNode;
    for(int j = 0; j<compressedString.length; j+=2){
        tempNode = list.pop();
        compressedString[j] = tempNode.letter;
        compressedString[j+1] = tempNode.freq;
    }

    str = Arrays.toString(compressedString);
    return str;

}
}

现在它只打印空白

最佳答案

您的构造函数未设置字段值,仅设置本地值。这个

public CompressString(char let, int appears){
  char letter = let;
  int  freq = appears;
}

应该是

public CompressString(char let, int appears){
  this.letter = let;
  this.freq = appears;
}

还要确保 freqletter 被标记为 public,或者定义方法,例如 getFreq()getLetter() 如果您还没有的话。

关于java - 在 Java 中访问对象成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25371718/

相关文章:

reactjs - 使用 makeStyles - useStyles() 全局抛出 'Invalid Hook Call' 错误

c++ - 动态链接时共享库中的全局变量和静态变量会发生什么情况?

java - 如何使用多个类的序列化来实现备份和恢复?

java - 如何在一个方法中解析不同类型的参数

java - 使用泛型和通配符进行合适的设计

java - 使用 JAVA DOM 解析 XML 文件时出现 AccessControlException

JavaScript 表示法。需要帮助理解此声明

javascript - 检查对象属性值是否为 false

c# - 需要有关 OOP 哲学的建议

java - 使用 JodaTime/java.time 将 float 秒数转换为毫秒数