为 Letter 计数器编写构造函数

Writing a constructor for a Letter counter

我需要为客户端代码编写此构造函数,该代码将读取文本文件并计算字母表中每个字母的实例数。当构造函数在客户端代码中为运行时,它会输出字母,然后输出它在文件中出现的实例数,例如:"a" occurred 65 times。我在覆盖 toString 方法时遇到了麻烦,因为我每次尝试时都会收到 ';' expected 作为编译器错误,并且我已经尝试了在网上找到的几种方法。另外,我不知道我在用 toCompare 方法做什么。我环顾了互联网,没有什么是正确的。以下是作业的确切说明以及我目前所掌握的内容。一如既往,我们将不胜感激。

create a class LetterCount that:

1) stores a single character (a letter) and a count (an integer) in private variables

2) implements the Comparable interface, thus there must be a compareTo() method which should compare two LetterCount objects by their count values

3) overrides toString() with a printable representation that shows the letter and the count

public class LetterCount implements Comparable<LetterCount> {
        private String letter;
        private int count;

        public LetterCount(String l, int x) {
            letter = l;
            count = x;
        }

        public String toString() {
            return "Letter" + letter + " occurs "+ count " + times";
        }
         public int compareTo(LetterCount other) {




    }
    }
return "Letter" + l + " occurs "+ x + " times";

您缺少 +

至于 compareTo,这通常 用于对 LetterCount 对象进行排序。所以在你的情况下比较计数值。

在 toString 中,您将返回 'l' 和 'x',它们是构造函数的局部变量。你应该使用字母和计数

而且您还在字符串“times”中包含了 +。

对于 compareTo 你需要为 count

添加一个 getter
public int getCount() {
    return count;
}


@Override
public int compareTo(LetterCount o) {
    if(count > o.getCount()){
        return 1;
    }else if(count == o.getCount()){
        return 0;
    }else{
        return -1;
    }
}
    return "Letter" + letter + " occurs " + count + " times";

缺少一个+,变量名错误。

public int compareTo(LetterCount other) {
    if ( count < other.count )
       return -1;
    else if (count == other.count)
       return 0;
    else
       return 1;
}

您一直在尝试打印出 lx,它们是在构造函数中传递给您的参数。当您尝试在 toString 中使用它们时,它们在 范围 中不存在——也就是说,Java 看不到它们。您应该使用在构造函数中分配给的实例变量(lettercount)。这些对你的 class 的所有方法一直可用,不像 lxlocal,并且只存在于构造函数中.

另外,你说你想比较 LetterCount 个实例的数量。 Integer.compare 函数将为您完成。请参阅文档 http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#compare(int,%20int)

public class LetterCount implements Comparable<LetterCount>
    {
            private String letter;
            private int count;

            public LetterCount(String l, int x)
            {
                letter = l;
                count = x;
            }

            public String toString()
            {
                return "Letter" + letter + " occurs "+ count +" times";
            }
             public int compareTo(LetterCount other)
             {
                return Integer.compare(this.count, other.count);
             }


    }