为Letter计数器编写构造函数

时间:2015-07-25 01:58:28

标签: java constructor comparable

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

  

创建一个LetterCount类:

     

1)存储单个字符(字母)和计数(整数)   私人变量

     

2)实现Comparable接口,因此必须有一个   compareTo()方法应该比较两个LetterCount对象   他们的计数值

     

3)使用显示的可打印表示覆盖toString()   信和计数

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) {




    }
    }

4 个答案:

答案 0 :(得分:1)

在toString中你回来了&#39; l&#39;和&#39; x&#39;这是构造函数的局部变量。你应该使用字母和计数

并且你还在字符串&#34;中包含了+倍&#34;

对于compareTo,您需要为计数添加一个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;
    }
}

答案 1 :(得分: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;
}

答案 2 :(得分:1)

您一直在尝试打印lx这些是构造函数中传递给您的参数。当您尝试在toString中使用它们时,它们不存在在范围中 - 也就是说,Java无法看到它们。您应该使用在构造函数中指定的实例变量(lettercount)。它们始终适用于您班级的所有方法,与 local lx不同,并且只存在于构造函数中。

另外,您说您希望将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);
             }


    }

答案 3 :(得分:0)

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

您错过了+

对于compareTo,这通常是用于订购LetterCount对象的 。所以在你的情况下比较计数值。