我需要为客户端代码编写此构造函数,该代码将读入文本文件并计算字母表中每个字母的实例数。当构造函数在客户端代码中运行时,它将输出字母,然后输出它在文件中出现的实例数,例如:"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) {
}
}
答案 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)
您一直在尝试打印l
和x
这些是构造函数中传递给您的参数。当您尝试在toString
中使用它们时,它们不存在在范围中 - 也就是说,Java无法看到它们。您应该使用在构造函数中指定的实例变量(letter
和count
)。它们始终适用于您班级的所有方法,与 local 的l
和x
不同,并且只存在于构造函数中。
另外,您说您希望将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对象的 。所以在你的情况下比较计数值。